月曜日, 7月 08, 2013

C++ - 自作クラスをcoutに<<オペレータで出力

自作のクラスを cout に<<オペレータで出力できると色々便利である.

以下のコードでそれを実現できるが,コンパイラによっては以下のコードはコンパイル出来ない.例えばg++はOKだがvc++10ではコンパイルに失敗する.


#include <iostream>
#include <string>
using namespace std;

class MyClass {
private:
 string name;
public:
 MyClass(const string s): name(s){}
 friend ostream& operator << (ostream& os, const MyClass& obj);

};

inline ostream& operator <<(ostream& os, const MyClass& obj) {
 os << obj.name;
 return os;
}

int main() {

 MyClass m("otter");
 cout << "Dump myclass -- " << m << endl;
 return 0;
}

0 件のコメント: