मैंने अपनी समस्या को समझाने के लिए नीचे दिया गया कोड लिखा था। अगर मैं लाइन 11 पर टिप्पणी करता हूं (कीवर्ड "उपयोग" के साथ), संकलक फ़ाइल को संकलित नहीं करता है और यह त्रुटि प्रदर्शित करता है: invalid conversion from 'char' to 'const char*'
। ऐसा लगता है कि कक्षा में Parent
कक्षा के void action(char)
विधि को नहीं देखा गया है।मुझे अपनी बेस क्लास विधि तक पहुंचने के लिए "उपयोग" कीवर्ड का उपयोग क्यों करना चाहिए?
संकलक इस तरह से व्यवहार क्यों करते हैं? या मैंने कुछ गलत किया है?
class Parent
{
public:
virtual void action(const char how){ this->action(&how); }
virtual void action(const char * how) = 0;
};
class Son : public Parent
{
public:
using Parent::action; // Why should i write this line?
void action(const char * how){ printf("Action: %c\n", *how); }
};
int main(int argc, char** argv)
{
Son s = Son();
s.action('a');
return 0;
}
कृपया मुझे बताएं: क्या होगा यदि आप "कॉन्स्ट चार कैसे" में कॉन्स्ट को हटा दें? –
आपको 'सोन एस = सोन();' टाइप करने की आवश्यकता नहीं है। यह सिर्फ अस्थायी बनाता है और फिर कॉपी कन्स्ट्रक्टर को कॉल करता है। बस 'सोन एस;' –
टाइप करें हमें यह प्रश्न बहुत कम मिलता है: [http://stackoverflow.com/questions/1835988 ](httpoverflow.com/questions/1835988) [http://stackoverflow.com/ प्रश्न/411103] (http://stackoverflow.com/questions/411103) [http://stackoverflow.com/questions/1480085 ](httpoverflow.com/questions/1480085) [http: // stackoverflow। कॉम/प्रश्न/17 99 4 9 7] (http://stackoverflow.com/questions/1799497) [http://stackoverflow.com/questions/888235 ](httpoverflow.com/questions/888235) [http: // stackoverflow.com/questions/72010 ](httpoverflow.com/questions/72010) –