我想初始化子类中的常量,而不是基类。并用它来摆脱动态内存分配(我已经知道数组大小,并且会有一些具有不同常量的子类)。
所以我尝试:C++初始化常量和继承
class A {
public:
const int x;
A() : x(0) {}
A(int x) : x(x) {}
void f() {
double y[this->x];
}
};
class B : A {
B() : A(2) {}
};
很简单,但是编译器说:
错误C2057:预期常量表达式
我怎么能告诉编译器,它是一个真正的不变?
如果它的值是在运行时确定的,那么它不是一个常量表达式。这样考虑:常量表达式是常量,这意味着数组的大小在所有A中都是恒定的。然而,你需要A的不同尺码。不同的大小 - >不是恒定的。 – GManNickG 2010-06-16 23:17:26