有没有一种方法可以重载<

class TestClass {
public:
    ostream& operator<<(ostream& os) {
        return os << "I'm in the class, msg=" << msg << endl;
    }

private:
    string msg;
};


int main(int argc, char** argv) {
    TestClass obj = TestClass();
    cout << obj;

    return 0;
}

我能想到的唯一方法是在类之外重载运算符:
ostream& operator<<(ostream& os, TestClass& obj) {
    return os << "I'm outside of the class and can't access msg" << endl;
}

但是,访问对象私有(private)部分的唯一方法是与运算符(operator)函数建立 friend 关系,并且我宁愿尽量避免与 friend 结伴,并要求您提供替代解决方案。

有关如何进行的任何评论或建议都将有所帮助:)

最佳答案

您偶然发现了实现此功能的规范方法。你所拥有的是正确的。

关于c++ - 重载运算符<<,作为成员进行打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8475940/

10-15 03:35