C++ でカスタム オブジェクトの配列へのポインターを使用しようとしています。次のコードは、cygwin の gnu コンパイラを使用する Eclipse でコンパイルおよび実行されます。しかし、このコードは Visual Studio でコンパイル エラーを返します。
エラー
class 'Levels' has an illegal zero-sized array
オンライン
Structure *mStructres[];
完全なコード
/*
* Levels.h
*/
#include "objects/Structure.h"
#ifndef LEVELS_H_
#define LEVELS_H_
class Levels{
public:
//other public members
void reInitialize();
Levels();
~Levels();
private:
//other private members
Structure *mStructres[];
};
#endif /* LEVELS_H_ */
/////////////////////////////////////
/*
* Levels.cpp
*/
#include "Levels.h"
Levels::Levels() {
}
Levels::~Levels() {
}
void Levels::reInitialize() {
mStructres[size];
for (int i = 0; i < jStructeresArr.size(); i++) {
mStructres[i] = new Structure(obj1, obj2,
obj3);
}
}
行を次のように変更してみました
Structure *mStructres;
しかし、その後、再初期化メソッドでこれらの行にエラーが発生しました
mStructres[size];
for (int i = 0; i < jStructeresArr.size(); i++) {
mStructres[i] = new Structure(obj1, obj2,
obj3);
}
私は何を間違っていますか?これは、クロスプラットフォーム開発のために正しい方法ですか?
更新 この段階では、ベクターまたは標準テンプレートを使用しないことをお勧めします。