是否可以转发声明要在派生类中使用的枚举类?

时间:2013-11-24 15:23:24

标签: c++ inheritance enumerator

我正在为我正在创建的这种简单的GUI脚本语言制作一个小小的解析器。一切正常,但我需要知道是否可以这样做:

Parser.hpp:

class Parser
{
public:
    enum class LineType;
}

GUIParser.hpp:

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

这声明在LineTypeParser内有一个名为Parser::LineType的枚举。

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

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

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