[英]C++ calling a method from another class
问题:
在token.cpp中,我有一个枚举类Token,它具有我的编译器可以读取的所有令牌(下面将提供编码)
现在在
但是它们正在产生一些错误。
错误:
码:
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.