cliext :: vector和copy构造函数

时间:2014-05-24 13:07:12

标签: constructor c++-cli

ref class A
{
public:
    cliext::vector<int> x;

    A(void);
    A(const A^ copied):
        x(copied->x){};
};

我有:

  

class“cliext :: vector&lt; _Value_t&gt;” :没有可用的复制构造函数或复制构造函数   声明'明确'

如何制作矢量副本?

1 个答案:

答案 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>。拥有垃圾收集器的一大优势是,您不必再担心需要销毁的集合中的对象。