【发布时间】:2012-01-18 13:01:42
【问题描述】:
有没有办法重载
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;
}
但是访问对象的私有部分的唯一方法是与 operator 函数为朋友,如果可能的话,我宁愿避免朋友,因此请您提供替代解决方案。
任何有关如何进行的 cmets 或建议都会有所帮助:)
【问题讨论】:
-
朋友不是应该解决这个问题吗?为什么要避开它们?
-
<<必须是非会员,但可以是朋友。 -
朋友是来回答问题的,不是解决问题的!
-
friends 是你的朋友。为什么要避开它们?
标签: c++ operator-overloading iostream