मैं operator<<
को मनमाने ढंग से सरणी के लिए अधिभारित करना चाहता हूं, जैसे कोड cout << my_arr
काम करेगा। सबसे पहले मैंने operator<<
के const T (&arr)[N]
पर दूसरे पैरामीटर को अधिभारित करने का प्रयास किया, जहां T
और N
टेम्पलेट पैरामीटर हैं। लेकिन कोड का परीक्षण करने से साइड इफेक्ट सामने आया: const char[]
भी टाइप स्पेसिफिकेशन से मेल खाता है, और स्ट्रीम क्लास में परिभाषित एक के साथ नए अधिभार संघर्ष। उदाहरण कोड:अधिभार ऑपरेटर << सरणी के लिए
#include <cstddef>
#include <iostream>
template<typename T, std::size_t N>
std::ostream& operator<<(std::ostream& os, const T (&arr)[N])
{
/* do stuff */
return os;
}
int main()
{
std::cout << "noooo\n"; /* Fails: ambiguous overload */
}
इस तरह के एक सरणी मुद्रण ऑपरेटर अभी भी लागू किया जा सकता है?
मुझे नहीं लगता कि एन कई मामलों में अच्छी तरह से स्थानांतरित करेगा। 'शून्य एफ (int arr [], size_t एन) {cout << arr; } ' –
यदि आप बाहरी पुस्तकालय चाहते हैं तो क्यों न केवल http://www.boost.org/doc/libs/1_48_0/doc/html/boost_lexical_cast.html – pyCthon
@Captain:' arr' वास्तव में प्रकार 'int * है 'उस मामले में, तो यह उस अधिभार से मेल नहीं खाएगा। –