2011-07-19 15 views
5

मैं निम्नलिखित है: क्योंकि यह एक शुद्ध आभासी समारोह हैशुद्ध आभासी कार्य करता है और सी में बच्चे कार्यों में अप्रयुक्त तर्क ++

class Parent { 
public: 
    virtual bool foo(vector<string> arg1, vector<string> arg2) = 0; 
}; 

class Child : public Parent { 
public: 
    bool foo(vector<string> arg1, vector<string> arg2); 
}; 

// arg1 and arg2 not used - GIVES WARNING 
bool Child::foo(vector<string> arg1, vector<string> arg2) { 
    return false; 
} 

वहाँ foo (...) का कोई जनक कार्यान्वयन है। माता-पिता कहते हैं कि foo दो वेक्टर तर्क लेता है। बच्चा दो स्ट्रिंग तर्कों के साथ इसे सही ढंग से लागू करता है लेकिन उनका उपयोग नहीं किया जाता है। हालांकि, माता-पिता के कुछ बच्चे इन तर्कों का उपयोग करेंगे ताकि उन्हें हमेशा वहां रहना पड़े।

वहाँ किसी भी तरह से मैं भले ही माता-पिता का कहना है कि यह करने के लिए है यह देखते हुए बाल वर्ग में foo तर्क के लिए नहीं की अनुमति के लिए अधिक भार का उपयोग कर सकते है?

बहुत धन्यवाद।

+3

जब तक आप, 'arg1' और' arg2' कॉपी बेहतर स्थिरांक संदर्भ द्वारा वैक्टर पास करना चाहते हैं। – kennytm

+1

यह शायद ही कभी "ओवरलोडिंग समस्या" है - आप यहां एक मामूली चेतावनी के बारे में बात कर रहे हैं :-) –

+0

शीर्षक में ओवरलोडिंग को हटाने के लिए संपादन - क्षमा करें: -एस। – ale

उत्तर

18

पैरामीटर नाम निर्दिष्ट नहीं है:

// arg1 and arg2 not used - GIVES WARNING 
bool Child::foo(vector<string>, vector<string>) { 
    return false; 
} 

कि चेतावनी का समाधान करना चाहिए।

जो भी कारण इसका समर्थन नहीं करता के लिए अपने संकलक है - ऐसा करते हैं:

// arg1 and arg2 not used - GIVES WARNING 
bool Child::foo(vector<string> arg1, vector<string> arg2) { 
    (void)arg1; (void)arg2; // ignore parameters without "unused" warning 
    return false; 
} 
+1

आपके कंपाइलर के आधार पर, आप इस चेतावनी को अक्षम करने के लिए कुछ #pragma कथन का भी उपयोग कर सकते हैं। वीसी ++ के तहत: #pragma चेतावनी (अक्षम: चेतावनी संख्या)। बोर्लैंड के तहत: #pragma चेतावनी-नहीं। जीसीसी के तहत मुझे नहीं पता। – Shlublu

+1

@ श्लुब्लू - हाँ, लेकिन मुझे लगता है कि चेतावनियों को दबाकर एक बुरी बात है, बेहतर लिखने वाला कोड जो उन्हें उत्पन्न नहीं करता है। इस मामले में यह बहुत आसान है (हालांकि दूसरा समाधान थोड़ा "गंदे" है)। – littleadv

+0

सही धन्यवाद। स्वीकार्य होगा जब स्टैक ओवरफ्लो का समाधान समय सीमा समाप्त हो जाती है। – ale

संबंधित मुद्दे