2017-04-12 44 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

非常感謝!它現在有效。 –