C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: エラーになる原因がわからなくて困っています。


(過去ログ 162 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■93831 / inTopicNo.1)  エラーになる原因がわからなくて困っています。
  
□投稿者/ ああつ (1回)-(2020/02/08(Sat) 15:05:46)

分類:[C/C++] 

初めて投稿します。なにか失礼があるかもしれませんがご容赦ください。c++初心者です。bituseというサイトを参考にして、ゲームを作っていたのですが、以下の操作をするとエラーになってしまいます。その原因がわからなくて困っています。簡略化しています。このコードでもエラーになります。OSはwindows 10、コンパイラはvisual studio 2019です。controlが定義されていない識別子です、と表示されます。さらにファイルが開けません、とエラーになります。自分の知識や理解が及んでいないのは重々承知なのですが、ご教示いただけると幸いです。
以下がcontrolヘッダー、enemyヘッダー、main.cppです。

controlヘッダー
#include <iostream>
#include "enemy.h"
using namespace std;

class control {
private:
	enemy* Enemy;
public:
	static control& getinstance() {
		static control Control;
		return Control;
	}
	void c_all();
	control();
};

void control::c_all() {
	cout << "c_all" << endl;
	Enemy->e_all();
}

control::control() {
	Enemy = new enemy;
}

enemyヘッダー
#include <iostream>
#include "control.h"
using namespace std;

class enemy {
private:
	int c;
public:
	void e_all();
};

void enemy::e_all() {
	cout << "c_all" << endl;

	control& e_Control = control::getinstance();
}

nain.cppです。
#include "control.h"

int main() {
	control* con = new control;

	con->c_all();

	return 0;
}

引用返信 編集キー/
■93832 / inTopicNo.2)  Re[1]: エラーになる原因がわからなくて困っています。
□投稿者/ ああつ (2回)-(2020/02/08(Sat) 22:22:42)
No93831 (ああつ さん) に返信
> 初めて投稿します。なにか失礼があるかもしれませんがご容赦ください。c++初心者です。bituseというサイトを参考にして、ゲームを作っていたのですが、以下の操作をするとエラーになってしまいます。その原因がわからなくて困っています。簡略化しています。このコードでもエラーになります。OSはwindows 10、コンパイラはvisual studio 2019です。controlが定義されていない識別子です、と表示されます。さらにファイルが開けません、とエラーになります。自分の知識や理解が及んでいないのは重々承知なのですが、ご教示いただけると幸いです。
> 以下がcontrolヘッダー、enemyヘッダー、main.cppです。
> 
> controlヘッダー
> #include <iostream>
> #include "enemy.h"
> using namespace std;
> 
> class control {
> private:
> 	enemy* Enemy;
> public:
> 	static control& getinstance() {
> 		static control Control;
> 		return Control;
> 	}
> 	void c_all();
> 	control();
> };
> 
> void control::c_all() {
> 	cout << "c_all" << endl;
> 	Enemy->e_all();
> }
> 
> control::control() {
> 	Enemy = new enemy;
> }
> 
> enemyヘッダー
> #include <iostream>
> #include "control.h"
> using namespace std;
> 
> class enemy {
> private:
> 	int c;
> public:
> 	void e_all();
> };
> 
> void enemy::e_all() {
> 	cout << "c_all" << endl;
> 
> 	control& e_Control = control::getinstance(); ここでエラーになります。
> }
> 
> nain.cppです。
> #include "control.h"
> 
> int main() {
> 	control* con = new control;
> 
> 	con->c_all();
> 
> 	return 0;
> }

引用返信 編集キー/
■93851 / inTopicNo.3)  Re[2]: エラーになる原因がわからなくて困っています。
□投稿者/ 774RR (776回)-(2020/02/12(Wed) 09:49:58)
control.h と enemy.h が相互依存しているからっす。
control.h は #include "enemy.h" 済みでないとうまく動かない構造で、
enemy.h は #include "control.h" 済みでないとうまく動かない構造で、
当然両方を同時に満たすことはできないのでエラーになるわけっす。

で、このソースコードは今どき流ではない書き方なんだけど、そのサイトではこんなコード推奨してるの?
分割コンパイルの例題として enemy.h enemy.cpp control.h control.cpp のようにファイル分けてない?
んでもって .h と .cpp の分割方針とか相互依存の解決方法とか解説してない?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -