繁体   English   中英

C++ 运算符重载错误:'operator>>'不匹配(操作数类型为'float'和'Class')

[英]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 的一个成员变量,称为CommandForward继承自该变量。

然后我尝试在另一个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM