C ++创建类和枚举类会产生错误

时间:2014-04-25 23:23:36

标签: c++ class enums

所以我有4个名为Token.h的文件,Token.cpp Lexer.cpp和Lexer.h ...在Token.h中我有一个枚举类,其中包含我的应用程序所需的某些标记。

我正在尝试在令牌中创建一个类(这不是枚举)因为我需要返回令牌和字符串(我从Lexer.cpp传递)

问题是这个。当我尝试在Token.cpp中创建这个类时

token.cpp


class Token
{ // Code needed
};

我在Token.h中声明它(其中包含所有这些代码)

Token.h


enum class Token
{ 
// Tokens needed for app 
......
......
}


class TokenLookup
{
public:

    Token tk;
    std::string str;

private:

    Token getToken();
    std::string getString();

    void setToken(Token sToken);
    void setString(std::string strbuffer);

}; 

Token.cpp需要返回TOKEN

的方法
Token Lexer::getNextToken()
{
    char ch;
    string bf ="";
    ch = ReadChar();

    while (input)
    {
        input.get(ch);

        if (isWhitespace(ch))
        {
            cout << "WS" << endl;
        }
        else if (isdigit(ch))
        {
            while(isdigit(ch))
            {
                bf += ch;
                cout << bf << endl;
                ch = ReadChar();
            }
            if(ch != '.')
               {
                    // DO nothing for now
               }
        }
        else if (isalpha(ch))
        {
            cout << " letter " << endl;
        }
        else if (isPunctuation(ch))
        {
            cout << " Punctuation " << endl;
        }
        else if (isArithmeticOperator(ch))
        {
            cout << " Arithmetic " << endl;
        }
        else if (isComparisonOperator(ch))
        {
            cout << " Comparison " << endl;
        }
        else
        {
            cout <<"error" << endl;
        }

        }

     //cout << "Row " << Row << " Col " << Col << " Offset " << Offset << endl;

        return Token (tokenNeeded, string) //WARNING! I'VE JUST INVENTED THESE PARAMETERS AS E.G

}
在Lexer.h中(其中包含了Token.h头文件)中的

会弹出一个错误说明

||=== Build: Release in Compilers (compiler: GNU GCC Compiler) ===|
E:\University\Compilers\Compilers\lexer.h|27|error: multiple types in one declaration|
E:\University\Compilers\Compilers\lexer.h|27|error: declaration does not declare anything [-fpermissive]|
||=== Build failed: 2 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

我猜是因为我在token.h中有两个不同的类..但错误在LEXER.h中弹出而不是在Token.h中,这是什么意思它没有声明任何东西?在做这个类之前(类TokenLookup)它工作得很好

我能解决这个问题吗?或者我需要一个新文件?

整个概念是在Lexer.cpp中我开始检查每个字符是什么......然后我返回Token +它的字符串(要添加到Vector)所以最后,我可以继续checkign下一个

由于

0 个答案:

没有答案