首页 > 解决方案 > 使用 const 成员变量索引数组

问题描述

我有以下课程。我想将该成员size用作arr1我将填写在构造函数中的索引。但是,编译器不会编译并说“无法初始化可变大小的对象”。如果size是 const,这怎么可能?

另一方面,arr2通过使用正确填充siz

class myclass {
public:
    myclass() 
    {        
        int arr1[size] = { 1, 2 };

        const size_t siz = 2;
        int arr2[siz] { 1, 2 };
    };

    const size_t size = 2;
};

标签: c++arraysclassindexing

解决方案


它不起作用的原因是您可以在构造函数中更改它:

myclass() : index(3)
{
    //...
}

您只是默认初始化了 const 成员。

你没有理由不在std::Vector这里使用。


您可以通过将其设为静态来使其工作(坏主意):

static const size_t index = 2;

PS。index这里的名字不好,你的意思是数组的大小而不是它的索引。


推荐阅读