【问题标题】:When adding the header file in the .cpp file, errors arise在.cpp文件中添加头文件时出现错误
【发布时间】: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++


【解决方案1】:

转发声明ASTSimpleExpressionNodeASTRelationOperatorNode

struct ASTSimpleExpressionNode;
struct ASTRelationOperatorNode;

struct ASTExpressionNode : ASTNode
{
   // etc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多