我正在尝试使用指向 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);
}
我究竟做错了什么?这是跨平台开发的正确方法吗?
更新 我不想在这个阶段使用向量或标准模板。