谁能解释为什么以下代码无法编译(在g++(GCC)3.2.3 20030502(Red Hat Linux 3.2.3-49)上)?

struct X {
public:
   enum State { A, B, C };

   X(State s) {}
};

int main()
{
   X(X::A);
}

我收到的消息是:

jjj.cpp:在函数'int main()'中:
jjj.cpp:10:'X X::A'不是'struct X'的静态成员
jjj.cpp:10:没有匹配的函数来调用“X::X()”
jjj.cpp:1:候选对象是:X::X(const X&)
jjj.cpp:5:X::X(X::State)`

这是错误的代码还是编译器错误?

Neil + Konrad解决了问题。请参阅下面对尼尔答案的评论。

最佳答案

X(X::A);

被视为一个函数声明。如果您确实需要此代码,请使用:
(X)(X::A);

07-24 09:15