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