क्या कोई कृपया बता सकता है कि मुझे यहां संकलन त्रुटि क्यों मिल रही है - त्रुटि C2558: कक्षा 'std :: auto_ptr < _Ty>': कोई प्रति निर्माता उपलब्ध नहीं है या प्रतिलिपि बनाने वाला घोषित किया जाता है 'स्पष्ट'कोई कॉपी कन्स्ट्रक्टर उपलब्ध नहीं है या कॉपी कन्स्ट्रक्टर को 'स्पष्ट' घोषित किया गया है
#include <memory>
#include <vector>
#include <string>
template<typename T>
struct test
{
typedef std::auto_ptr<T> dataptr;
typedef std::auto_ptr< test<T> > testptr;
test(const T& data):
data_(new T(data))
{
};
void add_other(const T& other)
{
others_.push_back(testptr(new test(other)));
}
private:
dataptr data_;
std::vector<testptr> others_;
};
int main(int argc, char* argv[])
{
test<std::string> g("d");
//this is the line that causes the error.
g.add_other("d");
return 0;
}
यह कुछ समय हो गया है क्योंकि मैंने सी ++ किया है, लेकिन यह 'g = test (" d ") नहीं होना चाहिए;'? –
@ जेसे जे: दोनों ठीक हैं। दोनों तरीकों से थोड़ा अलग व्यवहार होता है जो कि सबसे अधिक शैक्षिक मामलों में एक ही परिणाम देता है। तकनीकी रूप से आपकी विधि एक टेस्ट क्लास तैयार करेगी, फिर इसे जी को शुरू करने के बजाए इसे जी को असाइन करें। यह केवल एक मुद्दा बन जाता है जब आपके पास कस्टम कॉपी/असाइनमेंट/इनिट व्यवहार होते हैं। – Akusete
आप सभी को धन्यवाद। वास्तव में जानकारीपूर्ण जवाब। – Carl