我想初始化子類中的常量,而不是基類。並用它來擺脫動態內存分配(我已經知道數組大小,並且會有一些具有不同常量的子類)。
所以我嘗試: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