C++'struct name'中的struct没有命名类型

mar*_*ner 1 c++ struct

class A {
  enum E {one , two , three};
  struct B {
      char a;
      E num;
  };

  static const B arr[];
}
Run Code Online (Sandbox Code Playgroud)

A.cpp

const B A::arr[] = {
  {'1', one},
  {'2', two},
  {'3', three}
};
Run Code Online (Sandbox Code Playgroud)

编译时出现以下错误:'B'没有命名类型

jua*_*nza 6

B是在范围内定义的A,因此您需要通过其全名来引用它:

const A::B A::arr[] = { ....
Run Code Online (Sandbox Code Playgroud)

  • @mariner,如果答案可以帮助你尝试接受它. (2认同)