ref class A
{
public:
cliext::vector<int> x;
A(void);
A(const A^ copied):
x(copied->x){};
};
我有:
class“cliext :: vector&lt; _Value_t&gt;” :没有可用的复制构造函数或复制构造函数 声明'明确'
如何制作矢量副本?
答案 0 :(得分:1)
如评论中所述,必须使用^ hat声明托管引用类型。并且必须初始化它们,这需要使用gcnew为对象分配GC内存。所以它是:
ref class A {
public:
cliext::vector<int>^ x;
A() : x(gcnew cliext::vector<int>) {}
// etc..
};
请注意,如果您提供复制构造函数,那么您也应该提供赋值运算符,即三种规则样式。除非你给它们像STL / CLR需要的值语义,否则很少需要引用类型。否则perf is so poor的原因。强烈支持List<T>
。拥有垃圾收集器的一大优势是,您不必再担心需要销毁的集合中的对象。