循環的包含問題
循環的な包含を解決するために、クラスの 1 つを他のクラスのヘッダーで前方宣言します。ここに私の2つのファイルがあります:
最初のファイル ( Parameter.h ):
#pragma once
#include "Token.h"`
class Expression;
class Parameter {
public:
Parameter() {
string = new Token();
identifier = new Token();
expr = new Expression();
}
Token* string;
Token* identifier;
Expression* expr;
};
2 番目のファイル ( Expression.h ):
#pragma once
#include "Token.h"
#include "Parameter.h"
class Expression {
public:
Expression() {
param1 = new Parameter();
param2 = new Parameter();
op = new Token();
}
Expression(Parameter* p1, Token* o, Parameter* p2) {
param1 = p1;
param2 = p2;
op = o;
}
Parameter* param1;
Parameter* param2;
Token* op;
};
ご覧のとおり、Parameter.h で Expression を前方宣言していますが、まだ次の 2 つのエラーが発生しています。
「構造式」の前方宣言
不完全なタイプ 'struct Expression' の無効な使用
以前に投稿されたいくつかの質問を見ましたが、それでもこの問題を解決できませんでした。ありがとう。