繁体   English   中英

C ++从另一个类调用方法

[英]C++ calling a method from another class

  • 我有2个类以及它们的头文件lexer.cpp和lexer.h,token.cpp和token.h
  • 这些是创建编译器所必需的。 目前,我仍在执行词素,划分并读取令牌。
  • 现在,我有一个方法可以读取我从文件中加载的每个字符,例如,当它识别出它是一个整数时,它将返回一个令牌(这是token.cpp中的令牌)。

问题:

在token.cpp中,我有一个枚举类Token,它具有我的编译器可以读取的所有令牌(下面将提供编码)

现在在

  1. Lexer.cpp我必须调用此类( Token.cpp中的枚举类Token)。 token.h中,我刚刚声明了类名
  2. Lexer.h我写下了在Lexer.cpp中使用的方法的名称

但是它们正在产生一些错误。


错误: 错误


码:

Lexer.cpp

Token Lexer::getNextToken(char ch)
{
    return Token::tkDigit;
}

lexer.h

#ifndef lexer
#define lexer
#include "token.h"
class Lexer
{
public:

    char ReadChar();
    bool IsDigit (char ch);
    bool IsAlpha (char ch);
    bool IsIdentation (char ch);
    Token getNextToken (char ch);
};

#endif // lexer.h

Token.h

#ifndef token
#define token


enum class Token
{
    tkLetter,
    tkDigit,
    tkPrintable,
    tkType,

    //Literals
    tkBooleanLiteral,
    tkIntegerLiteral,
    tkRealLiteral,
    tkCharLiteral,
    tkStringLiteral,
    tkUnitLiteral,
    tkLiteral,
    tkIndentifier,

    //Operations
    tkMultpicativeOp,
    tkAdditiveOp,
    tkRelationalOp,

    //Params and Calls

    tkActualParams,
    tkFunctionCall,

    //cast and factors
    tkTypeCast,
    tkSubExpression,
    tkUnary,
    tkFactor,

    //Terms and Declarations

    tkTerm,
    tkSimpleExpression,
    tkExpression,
    tkAssignment,
    tkVariableDecl,
    tkFormalParam,
    tkFunctionDecl,

    //Statements
    tkReadStatement,
    tkWriteStatement,
    tkIfStatement,
    tkWhileStatement,
    tkHaltStatement,
    tkStatement,
    tkBlock,
    tkSxl,

};


#endif // token

Lexer.h您使用的是编译器(给定的lexer.h依赖项) lexer.h的类型( Token )。

只需包含Token的声明,并include

#ifndef lexer
#define lexer
#include "token.h"

class Lexer

从标头token.h中的 token.cpp中移动enum class Token的定义, 替换具有相同名称的ampty枚举的定义,并将此标头包含在lexer.h中

正如我所说的,将枚举声明从token.cpp中移到token.h中。 清楚吗?

函数getNextToken应该看起来像

Token Lexer::getNextToken(char ch)
{
    return Token::tkDigit;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM