編集:OKここに示す小さなテストプログラムを作成しました。ここにソースコードがあります。C++ Externクラス宣言
main.cppに:
#include "core.h"
Core core;
int main()
{
core.coreFunction();
}
core.h:
#ifndef CORE_H__
#define CORE_H__
#include "definitions.h"
#include "window.h"
class Core
{
public:
Window window;
void coreFunction()
{
window.windowFunction();
}
};
extern Core core;
#endif
definitions.h
#ifndef DEFINITIONS_H__
#define DEFINITIONS_H__
class Core;
class Window;
#endif
window.h
#ifndef WINDOW_H__
#define WINDOW_H__
class Window
{
public:
void windowFunction()
{
core.coreFunction();
}
};
#endif
このテストプログラムでは、次のエラーが発生します。window.h(10):エラーC2065: 'コア':宣言されていない識別子。私はこれが私の問題を少し明確にすることを願っています。これらの機能は、私の元のコードが長い間ここに投稿する方法であるため、私が何をしたのかを示すために意味をなさないことを忘れてください。
コンストラクタはコンパイラについて不平を言っています。コンストラクタがオーバーロードされている場合、Coreクラスの一部としてデフォルトのコンストラクタがありますか? – Mahesh
こんにちは、@user。スタックオーバーフローへようこそ。あなたが提示したときにあなたの質問に対する答えを誰かが知っているかもしれませんが、** complete **、** minimal **プログラムをペーストすると、オッズが改善されます。 Completeとは、コンパイルエラーを自分自身で見るためにダウンロードしてコンパイルできることを意味します。最小は、それがエラーをまだ示している最小のプログラムであることを意味します。また、このようなプログラムを作成する際には、自分でエラーが発生する可能性があります。詳細はhttp://sscce.orgを参照してください。 –