मैं रूपांतरण ऑपरेटरों के साथ स्ट्रिंग और char * के साथ कक्षा बनाने की कोशिश कर रहा हूं, यह स्ट्रिंग बनाने की कोशिश करते समय संदिग्ध कॉल त्रुटि बनाता है। मान मैं निम्नलिखित वर्ग है:सी ++ ऑपरेटर स्ट्रिंग और चार * संदिग्ध त्रुटि
class A
{
public:
A(){};
operator const char*() const { return "a" };
operator const string() const { return "b" };
}
और निम्नलिखित मुख्य कार्यक्रम:
int main()
{
A a;
string b = string(a);
return 0;
}
basic_string को यह पैदा कर रहा अस्पष्ट कॉल त्रुटि (ए &) भी करने की कोशिश की है:
class A
{
public:
A(){};
operator const char*() const { return "a" };
explicit operator const string() const { return "b" };
}
int main()
{
A a;
string b = static_cast<string>(a);
return 0;
}
यह वही त्रुटि उत्पन्न करता है। मुझे अपने कोड में दोनों ऑपरेटरों की आवश्यकता है, मैं यह काम कैसे कर सकता हूं ?
ध्यान दें: स्ट्रिंग ख का उपयोग कर एक काम करता है = लेकिन मैं स्ट्रिंग की जरूरत है (क) प्रारूप काम करने के लिए अच्छी तरह से
टिप्पणी 2: का उपयोग नहीं कर स्पष्ट keywork ऑपरेटर बनाता = अस्पष्ट
@ सर्गी मैं वहां स्थानीय चरम स्थान नहीं देख सकता हूं? –
[संबंधित] (https://stackoverflow.com/questions/3518145/c-overloading-conversion-operator-for- कस्टम-type-to-stdstring)। –
@ πάνταῥεῖ आह, हाँ, इसे डेटा सेगमेंट में संकलित किया जाना चाहिए। – Sergey