[英]C++ Operator overloading error: no match for ‘operator>>’ (operand types are ‘float’ and ‘Class’)
我正在处理一些 OOP 代码,并试图用operator >>
设置一个istream&
。 但是使用我拥有的代码,我不断收到错误,就像上面标题中提到的那样。 我必须这样做的代码是:
istream& operator>>(istream& in, Forward& fwd){
in >> fwd.value;
cerr << "Value in forward is: " << fwd.value;
return in;
}
此代码是Forward
class 的一部分, value
是基类 class 的一个成员变量,称为Command
, Forward
继承自该变量。
然后我尝试在另一个 class Program
class 中使用这个运算符:
istream& operator>>(istream& in, Program& prog){
float value = 4;
Forward *temp = new Forward();
value >> *temp;
}
但这给了我错误:
错误:不匹配“operator>>”(操作数类型为“float”和“Forward”)
和
参数 1 没有从“float”到“std::istream& {aka std::basic_istream&}”的已知转换
知道为什么会这样吗?
谢谢。
注意:我需要保留行Forward *temp = new Forward();
因为它在代码中被大量使用。
value >> *temp
用。。。来代替
in >> *temp;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.