0
我有這樣的標題:成員爲const且列表初始化的非靜態成員使用無效?
class A{
const int x;
typedef std::array<MyClass, x> ARRAY; // Cannot use x here?
};
,並在實現文件:
A::A() : x(10) {}
,但我得到了的typedef行編譯器錯誤說:
無效使用的非靜態數據成員A :: x
我是你ght x
只能用於數組大小的常量?我真的希望避免靜電。
*「我以爲只有在數組大小調整x時才需要const」*。你的想法是錯誤的:'const'不夠,它必須是* const **表達式***,這意味着它的*值*必須被編譯器知道。在你的情況下,'x'是**不是** const *表達式*;它只是一個只讀表達式(這意味着,它的值不被編譯器知道,但如果你試圖改變它的值,編譯器會咬你)。 – Nawaz
@Nawaz [在評論中沒有回答](http://meta.stackoverflow.com/q/320364/2069064) – Barry
這是你的第二個問題,你聲稱你真的想避免靜態。我真的很想看到你問你的這個特殊問題。因爲一旦解決了問題,你實際上可以編寫更好的代碼。 – StoryTeller