在构造函数初始化程序中确定数组大小

新手上路,请多包涵

在下面的代码中,我希望在调用 Class 构造函数时将数组定义为大小为 x 的数组。我怎样才能做到这一点?

 class Class
{
public:
  int array[];
  Class(int x) : ??? { }
}

原文由 zaratustra 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 701
2 个回答

您不能使用在编译时无法计算的非常量维度来初始化数组的大小(至少在当前的 C++ 标准中,AFAIK 中没有)。

我建议使用 std::vector<int> 而不是数组。它为大多数操作提供了类似数组的语法。

原文由 Cătălin Pitiș 发布,翻译遵循 CC BY-SA 3.0 许可协议

就像已经建议的那样,对于大多数情况,向量是一个不错的选择。

或者,如果要避免动态内存分配并且在编译时已知最大大小,则可以将自定义分配器与 std::vector 一起使用,或者可以使用嵌入式模板库之类的库。

见这里: https ://www.etlcpp.com/home.html

示例类:


#include <etl/vector.h>

class TestDummyClass {
public:
    TestDummyClass(size_t vectorSize) {
        if(vectorSize < MAX_SIZE) {
            testVector.resize(vectorSize);
        }
    }

private:
    static constexpr uint8_t MAX_SIZE = 20;
    etl::vector<int, MAX_SIZE> testVector;
    uint8_t dummyMember = 0;
};

原文由 Spacefish 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题