Comme indiqué dans le commentaire, les types de référence gérés doivent être déclarés avec le symbole^hat. Et ils doivent être initialisés, ce qui nécessite d'utiliser gcnew pour allouer de la mémoire GC pour l'objet. Il est donc:
ref class A {
public:
cliext::vector<int>^ x;
A() : x(gcnew cliext::vector<int>) {}
// etc..
};
Prenez note que si vous fournissez un constructeur de copie alors vous devez fournir à l'opérateur d'affectation ainsi, le style règle de trois. Ceci est rarement nécessaire pour les types de référence à moins que vous leur donniez une sémantique de valeur comme les besoins STL/CLR. Sinon, la raison pour laquelle perf is so poor. Favoriser fortement List<T>
à la place. Un gros avantage d'avoir un garbage collector est que vous n'avez plus à vous soucier des objets d'une collection qui ont besoin d'être détruits.
Essayez 'copié-> x.Clone()'? –
cliext :: impl :: vector_impl <_Value_t, _Is_ref> :: Clone: les surcharges numériques n'ont aucune conversion légale pour 'this' – Novikoff
Eh bien ... cherchez la définition de l'interface 'IClonable' pour savoir comment cloner des choses. Je suis juste en train de deviner. –