सी शैली के अंदर कक्षाओं का आवासीय उपयोग टाइपलेस परिवर्तनीय तर्क सूची एक सामान्य त्रुटि स्रोत है। उदाहरण:सी शैली परिवर्तनीय तर्क सूची में मूल्य के आधार पर कक्षा के उपयोग को प्रतिबंधित करने का कोई तरीका है?
class MyString {
public:
char *pChars;
int Length;
MyString(char *pChars) {
this->pChars = pChars;
Length = strlen(pChars);
} };
int main() {
MyString s1("Bla1"), s2("Bla2");
printf("%s%s", s1, s2); // This does not but should give a compiler warning/error!
return 0; }
printf कॉल वहाँ मूल्य से दो रों वस्तुओं प्राप्त करता है। इसका मतलब है कि उनके सभी सदस्यों को बस स्मृति की प्रतिलिपि बनाई गई है। लेकिन उन्हें एक साधारण चार पॉइंटर्स का अर्थ दिया जाता है। परिणाम निश्चित रूप से एक रनटाइम त्रुटि है।
मैं इस के लिए कोई समाधान नहीं मांग रहा हूं, लेकिन मैं अपनी कक्षा में कुछ जोड़ना चाहता हूं ताकि संकलक मुझे इसके बारे में चेतावनी दे या त्रुटि दे।
पहले ही घोषित करने की कोशिश की गई है लेकिन प्रतिलिपि बनाने वाले को लागू नहीं किया गया है। लेकिन ऐसा लगता है कि कोई कॉपी कन्स्ट्रक्टर नहीं कहा जाता है। :-(
कृपया सिर्फ शीर्षक में सवाल का जवाब मैं क्यों आप printf या इन चर तर्क सूची का उपयोग नहीं करना चाहिए की एक discusson जरूरत नहीं है -। जानते हैं कि
अपने समय के लिए धन्यवाद
।।
आप किस कंपाइलर का उपयोग कर रहे हैं? – kennytm
"मुझे एक चर्चा की आवश्यकता नहीं है कि आपको printf या इन चरणीय तर्क सूचियों का उपयोग क्यों नहीं करना चाहिए - उसे पता है।" - printf के साथ क्या गलत है? – alternative
मैं विज़ुअल सी ++ –