根据 const 类成员的大小初始化 stdarray

问题描述

有人可以向我解释为什么以下会导致错误“非类型模板参数不是常量表达式”以及如何处理?

#include <array>

class Test
{
    public:
    Test(int n) : num_requests(n/2){};
    const int num_requests;
    
    void func()
    {
        std::array <int,num_requests> test_array;
    };
};

解决方法

使用模板“参数”like this

#include <array>

template <int n>
struct Test
{
    void func()
    {
        std::array <int,n/2> test_array;
    };
};

int main() {
    auto t = Test<10>{};
    t.func();
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...