前提・実現したいこと
別cppファイルに記載したクラス同士でインスタンスを持ち合いたい
お世話になっております。Windows10にてC++の勉強をしております。
VS2019にて下記のソースコードのように、別cppファイルに記載したクラスの
インスタンスを持ち合いたいと思い、それぞれにお互いのcppをインクルードし
インスタンスを作成しています。
IDE上ではエラーは起きませんが、ビルドを行うと下記の試したことに出るような
コンパイルエラーが出てしまいコンパイルできません。
コンパイルエラーにならず、別cppに記載されたクラスがお互いに
インスタンスを持ち合うにはどう記述すればいいでしょうか?
お手数をおかけしますが何卒ご教示頂きたく宜しくお願いいたします。
なお、ヘッダーを定義して同様のことをしても、結局循環参照になって
しまうのでは?と思い実施していません。
発生している問題・エラーメッセージ
後述の「試したこと」を参照願います。
該当のソースコード
a.cpp
c++
1#pragma once 2#include "b.cpp" 3 4class a { 5public: 6 a() { 7 b* f = new b(); 8 } 9}; 10
b.cpp
c++
1#pragma once 2#include "a.cpp" 3 4class b { 5public: 6 b() { 7 a* f = new a(); 8 } 9 10};
試したこと
循環参照になっていると思い、下記2パターンを実施。両方コンパイルエラー
pragma onceを記載
----->C2065 'b': 定義されていない識別子です。
ifndefによるインクルードガード
----->C1014インクルードファイルが多すぎます:深さ=1024
補足情報(FW/ツールのバージョンなど)
利用環境:VisualStudio community 2019
回答1件
あなたの回答
tips
プレビュー