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