को देखते हुए निम्न विधियों:एक उद्धृत स्ट्रिंग एक std :: स्ट्रिंग से पहले बूल विधि हस्ताक्षर क्यों मेल खाता है?
// Method 1
void add(const std::string& header, bool replace);
//Method 2
void add(const std::string& name, const std::string& value);
ऐसा लगता है कि निम्नलिखित कोड विधि 2 के बजाय विधि 1 बुला खत्म हो जाएगा:
something.add("Hello", "World");
मैं एक और तरीका है कि इस तरह दिखता है बना दी:
//Method 3
void MyClass::add(const char* name, const char* value) {
add(std::string(name), std::string(value));
}
यह काम किया। तो यह प्रतीत होता है कि जब एक विधि एक "उद्धृत स्ट्रिंग" स्वीकार करता है यह निम्न क्रम में मिलान हो जाएगा:
const char*
bool
std::string
एक उद्धृत स्ट्रिंग क्यों व्यवहार किया जाएगा के रूप में std::string
से पहले? क्या यह सामान्य व्यवहार है? मैंने इस परियोजना के लिए एक सभ्य राशि लिखी है और गलत विधि हस्ताक्षर के साथ कोई अन्य समस्या नहीं है ...
यह है। मुझे एक बार यह समस्या थी और यह मुझे उलझन में डाल दिया, लेकिन आपका दूसरा पैरामीटर एक कॉन्स char * है, और इसे एक बूलियन में परिवर्तित कर दिया जाएगा। – GManNickG