回答
這很容易,只需要實現:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
你需要爲了返回到操作系統的引用鏈outpout(COUT < <富< < ENDL)
通常由超載operator<<
您的課程:
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
這將輸出構造函數值'10'? – 2016-06-27 14:15:32
請注意,如果'myclass'有任何'private'字段,並且您希望'operator <<()'輸出它們,'myclass'應該聲明'std :: ostream&operator <<(std :: ostream&,myclass const&) '作爲朋友。 – 2017-01-28 18:28:51
不應該是'const myclass&m'而不是'myclass const&m'? – Nubcake 2017-08-15 21:06:59
你需要重載<<
操作,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
然後當你做cout << x
(其中x
是myclass
類型的你的情況),這將輸出無論你的方法告訴它。在上面的例子中,它將是x.somevalue
成員。
如果成員的類型不能直接添加到ostream
,那麼您也需要使用與上述相同的方法爲該類型重載<<
運算符。
這是左移運算符,而不是「流運算符」。在Iostreams的上下文中,它是插入或提取操作符,但它絕不是流操作符。 – 2010-06-05 20:04:41
對不起,是的,你是對的。這正是我在我的腦海中所稱的,因爲我傾向於只在處理流時才使用它。在這種情況下,它將是您所說的插入操作符,而不僅僅是流操作符。我已經更新了我的答案以消除這一點。 – 2010-06-05 20:11:27
- 1. cout << stringstream
- 2. cout << cout和cout <<&cout在C++中有什麼區別?
- 3. 使用CIN >>和cout <<來填充類C++
- 4. 如何使is_arithmetic <myClass> ::值爲真?
- 5. C#列表<MyClass>應從MyClass的
- 6. list <myClass<int> *> sort
- 7. 如何投票列表<<MyClass>至列表<T>?
- 8. operator <<:std :: cout << i <<(i << 1);
- 9. visual studios cout << not working
- 10. 重寫的ToString()<MyClass>
- 11. 如何從Expression <Func <MyClass,string >>動態創建表達式<Func <MyClass,bool >>謂詞?
- 12. 在cout上的System.AccessViolationException << line
- 13. cout的奇怪行爲<< Boost :: posix_time
- 14. 將MyClass <SomeType>轉換爲MyClass <SomeOtherType>
- 15. 填充列表<myClass>使用LINQ
- 16. 如何爲自己的C++ cout <<像對象
- 17. 如何轉換Arraylist <myClass> in JSONArray
- 18. 訪問vector的迭代器<myClass>
- 19. xcode中:<br> 「msgpack ::運算<:用於建築x86_64的[COUT <<]
- 20. Binding ObservableCollection <MyClass> to TreeView
- 21. 如何從IEnumerable <MyClass>告訴IEnumerable <int>?
- 22. 如何將List <String>轉換爲列表<MyClass>?
- 23. setbase(8)和std :: cout << std :: oct
- 24. std :: cout中'operator <<'不匹配
- 25. 歧義與COUT <<和施放C++
- 26. 結果cout <<「Hello」+ 1 << endl; (C++)
- 27. 如何在SpecFlow中使用table.CreateSet <>(myClass)()生成缺失值?
- 28. cout <<打印功能的調用順序?
- 29. 類型不匹配:無法將MyClass <E>轉換爲MyClass <E>
- 30. 有沒有人知道endl(cout)和cout << endl之間的區別?
這是一個無限遞歸函數。它得到了讚揚!你一定要喜歡這個週末! – 2010-06-05 19:56:41