का अजीब व्यवहार मैं इस कोड का परीक्षण कर रहा हूं और सोच रहा हूं कि संकलन समय में यह क्यों विफल नहीं हुआ? मैं सी ++ 11 और जी ++ 4.7.2 का उपयोग कर रहा हूं।सी ++ कन्स्ट्रक्टर
मेरे उत्पादन कोड पर समान संरचना थी, यह रन टाइम पर त्रुटियां दे रहा था, फिर मैंने पाया कि मैं गलत तर्क प्रकार के साथ कक्षा का निर्माण कर रहा हूं। ताकि आप Work
निर्माता के लिए एक Word
पारित कर सकते हैं
#include <iostream>
#include <vector>
typedef std::vector<std::string> Word;
class Data {
public:
const Word &word;
Data(Word w) : word(w) {}
};
class Base{
const Data &data;
public:
Base(const Data &d): data(d) {}
~Base() {}
};
class Work : public Base{
public:
Work(const Data &d): Base(d){}
~Work() {}
};
int main(int argc, char **argv){
Word words;
words.push_back("work");
/*
* I'm confused with this constructor, why this passed the compilation
* ??
* Any special rule to reason this scenario ??
*
* But obviously it will fail at run time.
*/
const Work *work = new Work(words);
return 0;
}
शायद कहीं एक निहित रूपांतरण चल रहा है? –
शब्द डेटा कन्स्ट्रक्टर द्वारा डेटा में कनवर्ट किए जाते हैं और फिर कार्य (डेटा) – ZijingWu
पर कॉल क्यों विफल हो जाते हैं? Http://ideone.com/cxkf4X पर यह सफलता देता है। – xanatos