मुझे उम्मीद है कि कोई जवाब दे सकता है कि निम्नलिखित क्यों काम नहीं करता है। हालांकि मेरे साथ सहन, मैं बहुत ज्यादा एक noob अभी भी हूँ ... मैं सिर्फ क्यों निम्नलिखितसी ++ ओवरलोडिंग रूपांतरण ऑपरेटर कस्टम प्रकार से std :: स्ट्रिंग
using namespace std;
#include <string>
#include <iostream>
class testClass
{
public:
operator char*() {return (char*)"hi";};
operator int() {return 77;};
operator std::string () {return "hello";};
};
int main()
{
char* c;
int i;
std::string s = "goodday";
testClass t;
c = t;
i = t;
s = t;
cout<< "char: " << c << " int: " << i << " string: "<<s<<endl;
return 0;
}
मुझे एक संकलन समय त्रुटि देता है की तह तक पहुंचने नहीं कर सकते हैं:
myMain.cpp: In function ‘int main()’:
myMain.cpp:23: error: ambiguous overload for ‘operator=’ in ‘s = t’
/usr/include/c++/4.2.1/bits/basic_string.h:500: note: candidates are: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
/usr/include/c++/4.2.1/bits/basic_string.h:508: note: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
/usr/include/c++/4.2.1/bits/basic_string.h:519: note: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(_CharT) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]
मैं तो असाइनमेंट
s = t;
यह काम करता है।
मैं त्रुटि संदेश को समझने के लिए घंटों तक कोशिश कर रहा हूं, लेकिन मुझे सबसे ज्यादा परेशान करने वाला यह है कि यह char * के लिए काम करता है।
मैं किसी भी संकेत के लिए आभारी हूं। धन्यवाद! मार्कस
तो इसका मतलब है कि std :: स्ट्रिंग ऑपरेटर =() और मेरे testClass :: ऑपरेटर std :: स्ट्रिंग() नौकरी के लिए प्रतिस्पर्धा कर रहे हैं? – Markus
@ मार्कस: जैसा कि दूसरों को समझाने के लिए बहुत दयालु थे, असाइनमेंट ऑपरेटर ओवरलोड हो गया है और आपके वर्ग के एक निहित रूपांतरण के प्रकारों में से एक से अधिक संभाल सकता है। –