2011-07-21 21 views
5

यदि मेरे पास दो चर, x और y, और फ़ंक्शन ToString() के साथ एक साधारण वर्ग था जो डेटा के साथ स्वरूपित स्ट्रिंग देता है। जब मैंसी ++ cout के लिए प्रारूप << स्वचालित रूप से

फोन
cout << simpleClass << "\n"; 

किसी को भी एक तरह से मैं अपने आप को सही ढंग से स्वरूपित स्ट्रिंग वापस जाने के लिए कहा जाता है simpleClass.ToString किया जा सकता था पता है? मुझे लगता है कि ऑपरेटर कार्यों के साथ ऐसा करने का एक तरीका है, लेकिन मुझे नहीं पता कि मैं यह कैसे करूंगा।

उत्तर

9

आप कैसे इस तरह के एक ऑपरेटर को परिभाषित करने के लिए कह रहे हैं, तो

template<class CharT, class TraitsT> 
std::basic_ostream<CharT, TraitsT>& 
operator <<(std::basic_ostream<CharT, TraitsT>& os, SimpleClass const& sc) 
{ 
    return os << sc.ToString(); 
} 
+4

+1: मुझे पसंद है कि कैसे आप एक समारोह है जो सभी 'basic_ostream' वस्तुओं पर चल रही है लागू किया ही नहीं,' cout' –

+0

@Ken: बहुत सारे लोगों को विस्तृत धाराओं के बारे में भूल जाते हैं। ; - [ – ildjarn

+0

+1 और एक कुकी –

2

आप

std::ostream& operator <<(std::ostream&, const SimpleClass&) 

परिभाषित ToString() फोन, ostream& गुजर, और ostream& वापस जाने के लिए।

संबंधित मुद्दे