मैं अपने खुद के कलाकारों ऑपरेटरों के साथ एक वर्ग लिखने के लिए कोशिश कर रहा हूँ, लेकिन मैं कई operator=
रों'ऑपरेटर =' एसटीडी के लिए अस्पष्ट है :: स्ट्रिंग
मैं नीचे छोटे कोड के साथ समस्या को ठीक करने में कामयाब के साथ मुद्दों कर रहा हूँ
#include <string>
class X
{
public:
operator const char*() const {
return "a";
}
operator std::string() {
return "c";
}
};
void func()
{
X x;
std::string s = "";
s = x;
}
मैं समझता हूँ std::basic_string
कई असाइनमेंट ऑपरेटर है और इस कारण है कि संकलक भ्रमित हो जाता है कि।
अगर मैं या तो कास्ट ऑपरेटर को हटा देता हूं तो यह काम करता है, लेकिन मैं सोच रहा था कि दोनों ऑपरेटरों को रखने का कोई तरीका था या नहीं।
मेरी कक्षा कास्ट के आधार पर अलग-अलग मूल्यों को वापस कर देगी।
मैं कास्ट को मजबूर करने के लिए static_cast<std::string>(x)
का भी उपयोग कर सकता था, लेकिन मैं सोच रहा था कि स्थैतिक कलाकारों के बिना ऐसा करने का कोई तरीका था या नहीं?
's = std :: string (x)' के बारे में कैसे? –
हाँ, एक कलाकार काम करेगा, (जैसा कि मेरी पोस्ट में उल्लिखित है), लेकिन मेरा प्रश्न अधिक है अगर मैं संकलक को संकेत दे सकता हूं कि मुझे क्या उपयोग करना है ताकि मुझे खुद कास्ट का उपयोग करने की आवश्यकता न हो। –
क्या वास्तव में "कंपाइलर को संकेत" नहीं डाला गया है? –