2017-04-12 68 views
0

单独编译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" 
+0

ASTNode必须有我想ASTExpressionNode需要访问一个虚拟的方法,如果你要在一个结构中使用多态,但您声明指针的方式其他结构的实例也是如此。只是一个猜测,希望它有帮助。 – yardpenalty

回答

0

前向申报ASTSimpleExpressionNodeASTRelationOperatorNode

struct ASTSimpleExpressionNode; 
struct ASTRelationOperatorNode; 

struct ASTExpressionNode : ASTNode 
{ 
    // etc 
+0

非常感谢!它现在有效。 –