読者です 読者をやめる 読者になる 読者になる

【Programming】相互参照するクラス

Programming

春休みが始まってから一か月ぶりにプログラミングをしていた。
ずっとBlenderで遊んだり静岡旅行行ってたり色々していたので触る暇もなかった・・・
ゲーム作るのは年末にPython書いて以来・・・なのかな?
トランプゲームを課題で作った気がするけど、アレは土日でサックリ作ったからあんまり覚えてない。

まぁそれはさておき、今作ってるプログラムで以下のような構造が出てきた。
環境はVisual Studio 2013、C++での話。

#include "huga.h"

class Hoge{
	Huga* huga;
};
#include "hoge.h"

class Huga{
	Hoge* hoge;
};

こんな感じ。
これは相互参照といってコンパイルが通らない。

去年の前期のネットワークの授業で引っかかって対処に苦労した覚えがある。
というのも、C++のincludeは単純に展開するだけらしく、どちらにどちらが展開されても未定義の型が出現する。
一年前の自分は友人に聞いて解決したのだが、また同じ問題に引っかかった。

というわけで、解決方法をググったら
d.hatena.ne.jp

このような記事が出てきた。
うん・・・なるほど。非常にわかりやすい。

やっぱりC++ってめんどくさい。
なんとなく慣れてるから使ってるけど、このまま凝り固まるよりはさっさと新しい言語でも覚えた方が良いかもしれない。

でもJavaみたいに一つのファイルに全部書くのよりはC++みたいに別々に書く方がなんとなく見通しが良いような気がして好きだ。
ロクに設計もしないから他に設計書みたいなファイルがある場合そうでもないんだろうけど。