2013-11-24 57 views
0

我目前正在为这个简单的GUI脚本语言创建一个小的小解析器。一切工作正常,但我需要知道,如果有可能做到这一点:是否有可能转发声明枚举类在派生类中使用?

Parser.hpp:

class Parser 
{ 
public: 
    enum class LineType; 
} 

GUIParser.hpp:

class GUIParser : public Parser 
{ 
public: 
     enum class LineType 
     { 
      BACKGROUND, 
      BUTTON, 
      LABEL, 
      RADIOBOX, 
      COMMENT 
     }; 
} 

这给了我一个错误,但如果那么我可能会犯什么语法错误?

感谢您的帮助!

+2

哪个编译器,哪个版本,哪个操作系统?您是否明确启用了[C++ 11](http://en.wikipedia.org/wiki/C++11) '-std = C++ 11'与GCC 4.8? –

回答

5

这就是声明在ParserParser::LineType内有一个名为LineType的枚举。

在派生类中,您有一个名为LineType的枚举,其完整的“名称”将是:GUIParser::LineType

因此,由于无法预测派生类的名称,因此无法转发声明它将包含的内容。

这就是它背后的逻辑,更简单的答案是:不,它不符合标准。

+0

感谢您的详细解答! – Peter