我正在为我正在创建的这种简单的GUI脚本语言制作一个小小的解析器。一切正常,但我需要知道是否可以这样做:
Parser.hpp:
class Parser
{
public:
enum class LineType;
}
GUIParser.hpp:
class GUIParser : public Parser
{
public:
enum class LineType
{
BACKGROUND,
BUTTON,
LABEL,
RADIOBOX,
COMMENT
};
}
这给了我一个错误,但如果有可能那么我会做出什么语法错误?
感谢您的帮助!
答案 0 :(得分:5)
这声明在LineType
或Parser
内有一个名为Parser::LineType
的枚举。
在派生类中,您有一个名为LineType
的枚举,其完整的“名称”将为:GUIParser::LineType
。
因此,由于无法预测派生类的名称,因此无法转发声明它将包含的内容。
这就是它背后的逻辑,更简单的答案是:不,它不符合标准。