Есть ли способ перегрузить оператор <<, как член класса, для печати значений в виде текстового потока. Например:
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;
}
Но тогда единственным способом получить доступ к приватным частям объекта будет подружиться с функцией оператора, а я бы предпочел избежать друзей, если это возможно, и поэтому прошу вас предложить альтернативные решения.
Любые комментарии или рекомендации о том, как действовать дальше, будут полезны :)