【发布时间】:2017-09-08 01:50:35
【问题描述】:
Nodes.h 文件在编译时单独工作,但是当我将它包含在 Nodes.cpp 文件中时,会出现所有错误,例如缺少类型说明符 - int 假设在第 11,12,13 行。另一个错误是语法错误:标识符'ASTSimpleExpressionNode'。是不是我做错了什么。我不能通过定义不同的构造函数来指定如何构造我的结构吗?
现在ASTSimpleExpressionNode 是空的,因为如果我继续这个过程,它会重复所有的错误。
一些错误:
错误 C2535 'ASTExpressionNode::ASTExpressionNode(void)': 成员 函数已定义或声明 [第 16 行] 缺少错误 C4430 类型说明符 - 假定为 int。注意:C++ 不支持 default-int [第 11、12,13 行等。] 错误 C2143 语法错误:缺失 ';' '*' 之前 [第 11,12,13 行] ';' 之前的意外标记[线 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 也需要访问其他结构的实例。只是猜测,希望对您有所帮助。
标签: c++