gpt4 book ai didi

c++ - 如何通过继承管理运算符重载

转载 作者:行者123 更新时间:2023-11-30 04:01:32 24 4
gpt4 key购买 nike

我有一个带有多个重载运算符的矩阵类,但我需要扩展它。我有一些编译错误。显示问题的玩具程序:

template<typename T, int R, int C>
class matrix {
public:
matrix() {};
matrix(const matrix<T,R,C>& rhs) {}
matrix<T,R,C> operator+(const matrix<T,R,C>& rhs) {
matrix<T,R,C> result(); /*some code*/ return result;
}
~matrix() {}
matrix<T,R,C>& operator=(const matrix<T,R,C>& rhs) {
return *this;
}
};

class point: public matrix<double, 1, 2> {
public:
point();
};

int main() {
point p1;
point p2, p3;
p1 + p2 <---------error

p1 = p2 + p3; <-------error
return 0;
}

编译器错误是:

In instantiation of ‘matrix<T, R, C> matrix<T, R, C>::operator+(const matrix<T, R, C>&) [with T = double; int R = 1; int C = 2]’:
a.cpp:28:13: required from here
a.cpp:7:93: error: could not convert ‘result<double, 1, 2>’ from ‘matrix<double, 1, 2> (*)()’ to ‘matrix<double, 1, 2>’

最佳答案

再次进行解析。

matrix<T,R,C> result(); 

声明一个名为 result 的函数不带参数并返回 matrix<T,R,C> .取出 parent 。


When I try to extend the class I want to return from operator+() and so on object of the child class.

然后您需要为派生类提供自己的运算符。基类函数如何知道它实际上在派生类上运行?

关于c++ - 如何通过继承管理运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com