【问题标题】:C++ array initializer. Using enum typeC++ 数组初始化器。使用枚举类型
【发布时间】:2011-10-21 22:54:53
【问题描述】:
class ARouter {
    enum directions {north, neast, east, seast, south, swest, west, nwest};
    static directions gon[] = {north, neast, nwest, east, west, seast, swest, south};
};

你好,有人知道上面的代码是怎么回事吗?

VC++2008Ex 的第二行出现 2 个错误:

错误 C2059:语法错误:'{'

错误 C2334:'{' 之前的意外标记;跳过明显的函数体

【问题讨论】:

  • 这些行没有错。您可能在文件的后面有一个语法错误,这导致编译器变得混乱。或者你可能在某个无效的地方定义了变量,比如在类体内。
  • 发布更多代码,它会在我这边编译。
  • AFAIK 没问题;您的代码在 g++ 4 中运行良好。
  • 你确定?为了完整起见,我只是把它分成了一个小类。我并没有真正改变任何其他东西来打破它。我会拔掉线再试一次。 brb.
  • 返回。不,这些线肯定会破坏它。

标签: c++ arrays enums initializer


【解决方案1】:

你不能在这样的类中定义变量。

它需要是这样的:

class ARouter {
    enum directions {north, neast, east, seast, south, swest, west, nwest};
    static directions gon[];
};

ARouter::directions ARouter::gon[] = {north, neast, nwest, east, west, seast, swest, south};

声明进入类体; 定义在外面。请注意,您通常会将类主体放在标头中,并将定义放在源文件中。

【讨论】:

  • 在这种情况下,化名“类变量”误导了我。
猜你喜欢
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多