在.cpp文件中添加头文件时,出现错误
单独编译Nodes.h文件时工作,但是当我将它包含在Nodes.cpp文件中时,会出现所有错误,例如缺少类型说明符 - int
在第11,12,13行假设。另一个错误是语法错误:标识符'ASTSimpleExpressionNode'
。这是我做错了什么吗?我不能指定如何通过定义不同的构造函数来构造我的结构? 现在ASTSimpleExpressionNode
是空的,因为如果我继续这个过程,它会复制所有的错误。在.cpp文件中添加头文件时,出现错误
一些错误:
Error C2535 'ASTExpressionNode::ASTExpressionNode(void)': member function already defined or declared [line 16] Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int [Line 11, 12,13 so on.] Error C2143 syntax error: missing ';' before '*' [Line 11,12,13] unexpected token(s) preceding ';' [Line 11,12,13]
Nodes.h文件。
#pragma once
#include <string>
using namespace std;
struct ASTNode
{
};
struct ASTExpressionNode : ASTNode
{
ASTSimpleExpressionNode *left;
ASTRelationOperatorNode *rel_op;
ASTSimpleExpressionNode *right;
ASTExpressionNode(ASTSimpleExpressionNode *l);
ASTExpressionNode(ASTSimpleExpressionNode *l, ASTRelationOperatorNode *op, ASTSimpleExpressionNode *r);
};
struct ASTSimpleExpressionNode : ASTExpressionNode
{
};
struct ASTRelationOperatorNode :ASTExpressionNode
{
string rel_op;
ASTRelationOperatorNode(string op);
};
Nodes.cpp文件。
#include "Nodes.h"
前向申报ASTSimpleExpressionNode
和ASTRelationOperatorNode
:
struct ASTSimpleExpressionNode;
struct ASTRelationOperatorNode;
struct ASTExpressionNode : ASTNode
{
// etc
非常感谢!它现在有效。 –
ASTNode必须有我想ASTExpressionNode需要访问一个虚拟的方法,如果你要在一个结构中使用多态,但您声明指针的方式其他结构的实例也是如此。只是一个猜测,希望它有帮助。 – yardpenalty