//Using g++ and ubuntu.
#include <vector>
using namespace std;
एक वर्ग को परिभाषित करें:सी ++ कंस्ट्रक्टर्स के साथ वर्गों के वैक्टर
class foo(){
(...)
foo(int arg1, double arg2);
}
कंस्ट्रक्टर:
foo::foo(int arg1, double arg2){
(...) //arrays whose length depend upon arg1 and arg2
}
मैं कुछ इस तरह करना चाहते हैं:
vector<foo> bar(10); //error: no matching function for call to 'foo::foo()'
bar[0] = new foo(123, 4.56);
(...)
एक वैकल्पिक विधि (जो मुझे कम पसंद है) push_back का उपयोग करना है:
vector<foo> bar; //works
bar.push_back(new foo(123, 4.56)); //throws similar error.
//Omitting the "new" compiles but throws a "double free or corruption (fasttop)" on runtime.
मैं वेक्टर के विभिन्न तत्वों का अलग-अलग निर्माण करना चाहता हूं, इसलिए मैं "दोहराव अनुक्रम कन्स्ट्रक्टर" का उपयोग नहीं करना चाहता हूं। क्या किया जाना चाहिए?
एक बहुत अच्छी जवाब के +1:
क्या आप शायद करना चाहिए निम्नलिखित है। यदि मैं कर सकता था, तो मैं यह नहीं कहने के लिए एक अतिरिक्त +1 देना चाहता हूं कि आपको हमेशा std :: वेक्टर का उपयोग करना चाहिए, लेकिन आपको हमेशा वेक्टर का उपयोग करना चाहिए। – Simon