單獨編譯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"
ASTNode必須有我想ASTExpressionNode需要訪問一個虛擬的方法,如果你要在一個結構中使用多態,但您聲明指針的方式其他結構的實例也是如此。只是一個猜測,希望它有幫助。 – yardpenalty