C++ 重载 << 和一元负号

标签 c++ reference operator-overloading

执行此操作时出现奇怪的错误(std::cout << BigReal::operator-()() 中的 'operator<<' 不匹配):

cout<<(-D);

其中 << 重载如下:

ostream & operator<<( ostream &c, BigReal &n )
{
    c << n.nume << "=" << "[" << n.nr << "]  ";
    return c;
}

和一元 - 如:

BigReal BigReal::operator-( void )
{
    float negativ = atof( nr );

    char buff[ 1000 ];
    sprintf( buff, "%f", -negativ );

    //strcpy( nr, buff );
    BigReal Rez(buff, "Nr.");
    return Rez;
}

D 是一个 BigReal。

最佳答案

表达式 -D 创建一个临时对象。临时对象可以绑定(bind)到 const 引用。所以改变运营商<<以下方式

ostream & operator<<( ostream &c, const BigReal &n );

关于C++ 重载 << 和一元负号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079627/

相关文章:

c++ - 为什么使用 < 运算符的 vector 比较会对每个项目进行两次比较?

c++ - 如何在 C++ 中访问成对集合

c++ - OSX 上 TCP_USER_TIMEOUT 的 setsockopt 选项名称是什么

c# - namespace 无法识别(即使它在那里)

file - 如何从另一个文件中获取 json 模式?

c# - 当删除对类实例的所有其他引用时,Action<T> 是否会阻止封闭的类实例被 GC ?

c++ - 不工作 : override the default less-than operator of shared_ptr of a class

c++ - 返回对结构的引用

c++ - 转置数组

c++ - 如何确定函数特化的主模板?