コンパイラはこのクラスのすべての要素をゼロで初期化するため、値クラスにはデフォルトのコンストラクターがないことを知っています。しかし、配列は値クラスにあり、初期化されていません:
value class c_LocationVal
{
public:
double x, y, z;
c_LocationVal(double i_x, double i_y, double i_z) {x = i_x; y = i_y; z = i_z;}
};
typedef cli::array<c_LocationVal> arrloc;
value class c_Managed
{
public:
arrloc^ m_alocTest;
//c_Managed() { m_alocTest = gcnew arrloc(3); } --> not permitted
double funcManaged ()
{
return m_alocTest[0].x; --> error: Object reference not set to an instance of an object
}
};
私はチートして使用することができました:
c_Managed(int i) { m_alocTest = gcnew arrloc(3); }
しかし、別の解決策があるはずです。
誰かがこれを解決する方法を教えてもらえますか?