这是我的密码
class world{
public:
int w;
int h;
int windowWidth = 80;
int windowHeight = 46;
char windowMap[windowHeight][windowWidth];我想通过使用windowMap46和windowHeight来确定windowWidth的大小,但是我得到了这个错误
警告:非静态数据成员初始化器仅适用于-std=c++11或-std=gnu++11。
有什么办法可以解决这个问题,还是有一个更好的方法来实现同样的结果?
发布于 2016-11-12 10:51:53
宽度和高度的变量必须是常量和静态变量,因为它们应该在编译期间可用。否则,您可以使用向量并在构造函数中动态分配内存。然后可以将windowMap的大小指定为参数,从而使类更可重用。
简单的改动是:
const static int windowWidth = 80;
const static int windowHeight = 46;发布于 2016-11-12 11:08:21
将windowMap字段初始化移动到构造函数
class world{
public:
int w;
int h;
int windowWidth = 80;
int windowHeight = 46;
char **windowMap;
world (){
windowMap = new char*[windowWidth];
for(int i = 0; i < windowWidth; i++)
windowMap[i] = new char[windowHeight];
}
};将字段声明为static将在该类的所有实例中共享它,在这种情况下可能不喜欢。
--不要忘记,您必须在析构函数中调用delete[],否则内存泄漏。
https://stackoverflow.com/questions/40561973
复制相似问题