首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用类中的另一个成员初始化成员数组的大小

使用类中的另一个成员初始化成员数组的大小
EN

Stack Overflow用户
提问于 2016-11-12 10:37:14
回答 2查看 103关注 0票数 1

这是我的密码

代码语言:javascript
复制
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。

有什么办法可以解决这个问题,还是有一个更好的方法来实现同样的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-12 10:51:53

宽度和高度的变量必须是常量和静态变量,因为它们应该在编译期间可用。否则,您可以使用向量并在构造函数中动态分配内存。然后可以将windowMap的大小指定为参数,从而使类更可重用。

简单的改动是:

代码语言:javascript
复制
const static int windowWidth = 80;
const static int windowHeight = 46;
票数 2
EN

Stack Overflow用户

发布于 2016-11-12 11:08:21

windowMap字段初始化移动到构造函数

代码语言:javascript
复制
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[],否则内存泄漏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40561973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档