निम्नलिखित उदाहरण पर विचार ऑपरेटर के साथ में लात नहीं करता है:अंतर्निहित रूपांतरण ऑपरेटर ओवरलोडिंग
#include <string>
#include <sstream>
struct Location {
unsigned line;
template<typename CharT, typename Traits>
operator std::basic_string<CharT, Traits>() const {
std::basic_ostringstream<CharT, Traits> ss;
ss << line;
return ss.str();
}
};
int main()
{
using namespace std::string_literals;
Location loc{42};
std::string s1 = "Line: "s.append(loc) + "\n"s; // fine
//std::string s2 = "Line: "s + loc + "\n"s; // error
}
टिप्पणी की लाइन एक संकलन त्रुटि का कारण बनता है: no match for 'operator+'
। क्यूं कर? मेरा प्रारंभिक विचार यह था कि यह पहले कनवर्ट करने के लिए operator std::string
का उपयोग करेगा और फिर operator+
पर कॉल करें, वैसे ही यह .append
के लिए भी करता है।
यह केवल एक स्तर का निहित रूपांतरण है, इसलिए इसे किया जाना चाहिए और इसे ध्यान में रखा जाना चाहिए, नहीं?
पूछने के लिए खेद है, लेकिन मुझे कामकाजी कोड नहीं मिल रहा है। 'एस' क्या है? – gsamaras
@gsamaras http://en.cppreference.com/w/cpp/string/basic_string/operator%22%22s – Holt
दाएं @ होल्ट, धन्यवाद! – gsamaras