Uza*_*ooq 3 c++ arrays variables class constants
如何在类中使用常量类变量声明常量数组?可能吗.我不想要动态数组.
我的意思是这样的:
class test
{
const int size;
int array[size];
public:
test():size(50)
{}
}
int main()
{
test t(500);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了错误
不,这是不可能的:只要size是动态变量,array[size]就不可能实现为静态数组.
如果您愿意,可以这样考虑:sizeof(test)必须在编译时知道(例如考虑数组test).但是sizeof(test) == sizeof(int) * (1 + size)在您的假设示例中,这不是编译时已知的值!
你可以size进入模板参数; 这是唯一的解决方案:
template <unsigned int N>
class Test
{
int array[N];
static const unsigned int size = N; // unnecessary really
public:
// ...
};
Run Code Online (Sandbox Code Playgroud)
用法: Test<50> x;
请注意,现在我们有sizeof(Test<N>) == sizeof(int) * (1 + N),这是实际上是一个编译时已知值,因为每个N,Test<N>是一个独特的类型.