首页 > 解决方案 > 在 C++ 类中声明可变大小的数组/向量

问题描述

我想在 C++ 类中声明一个可变大小(不是真正的可变大小)数组/向量,我遇到了奇怪的错误。我试图找到解决方案,但无法解决错误。C++ 诸神,保佑我。

class threeStack{
    private:
        int numberOfStacks = 3;
        int sizeOfEachStack = 2;
        int kc = 10;
        vector <int> a(numberOfStacks * sizeOfEachStack);
        vector <int> tops(numberOfStacks);
        };

错误

         vector <int> a(numberOfStacks * sizeOfEachStack);
                        ^~~~~~~~~~~~~~
main.cpp:10:27: error: ‘numberOfStacks’ is not a type
         vector <int> tops(numberOfStacks);
                           ^~~~~~~~~~~~~~

标签: c++arraysclassoop

解决方案


在声明类成员时,您没有为它们指定构造函数参数。这是在类本身的构造函数中完成的。

class threeStack{
    private:
        int numberOfStacks;
        int sizeOfEachStack;
        int kc;
        vector <int> a;
        vector <int> tops;

    public:
        threeStack() : numberOfStacks(3), sizeOfEachStack(2), 
                       kc(10), a(3 * 2), tops(3) {
        }

        threeStack(int numberOfStacks, int sizeOfEachStack) : 
            numberOfStacks(numberOfStacks),
            sizeOfEachStack(sizeOfEachStack),
            kc(10), 
            a(numberOfStacks * sizeOfEachStack), 
            tops(sizeOfEachStack) 
        {
        }
};

此外,数据成员的默认初始化是 C++11 及更高版本的一项功能,因此如果您使用旧版本的标准进行编译,您还需要在构造函数中指定这些。


推荐阅读