c++ - 简单的 C++ 运算符重载帮助

标签 c++ operators operator-overloading overloading iostream

如何重载 <<运算符(operator)?从我得到的错误来看,似乎是 std::cout不知道如何使用 << .

这是在一个类中:

// uint64_t UPPER, LOWER;
std::ostream & operator<<(std::ostream & stream){
    if (UPPER)
        stream << UPPER;
    stream << LOWER;
    return stream;
}

我得到 error: no match for 'operator<<' in 'std::cout << test'这似乎没有意义。

编辑:

这都不是:

std::ostream & operator<<(std::ostream & stream, uint128_t const & val){
    if (val.upper())
        stream << val.upper();
    stream << val.lower();
    return stream;
}

也不是这个:

std::ostream & operator<<(std::ostream & stream, uint128_t val){
    if (val.upper())
        stream << val.upper();
    stream << val.lower();
    return stream;
}

正在改错。

最佳答案

<<运算符有两个参数,左侧和右侧。因此,您必须使用两个参数定义函数:

std::ostream operator<<(std::ostream &os, const MyClass &obj);

据我所知,你必须在你的类定义之外定义它。在类定义内部,您只能拥有将该类作为左侧的运算符。

关于c++ - 简单的 C++ 运算符重载帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106017/

相关文章:

c++ - QPushButton 工具提示插入一个换行符而我没有指定它

c++ - 使模板接受特定的类/类族?

php - 用PHP中的@运算符抑制错误

c - "##"在 C 中做什么?

c++ - operator== 改变其操作数是不好的做法吗?

c++ - 在一个命令中使用 2 个重载运算符会导致错误

c++ - 建立一个形状类三角形

C++ 如何从一个函数返回多个不同类型的数组

c++ - 同级友元运算符似乎不参与重载决议

c++ - "auto changes meaning in c++11"