[背景]
windows10 VisualStudio2013でC++の開発をしています。
既に開発済みのプロジェクトに新しくcppファイルとhファイルを追加し、
ソリューション全体でビルドしたところ、エラーが発生しています。
[エラー]
error LNK2019: 未解決の外部シンボル "public: __cdecl AAA::AAA" (※※※) が関数 "public: __cdecl BBB::BBB" (※※※) で参照されました。
[試したこと]
1.
・hファイルをデフォルトコンストラクタとデストラクタの宣言のみにした。
・cppファイルをデフォルトコンストラクタとデストラクタの定義のみにした。
結果:上記と同様のビルドエラーが発生。
2.
・hファイルをデフォルトコンストラクタとデストラクタの定義のみにした。
・cppファイルを空(#include"AAA.h"のみ)にした。
結果:ビルド成功
[質問]
ビルドエラーの要因は、cppファイルがヘッダーファイルを参照できていないこと
だと考えております。
どのすれば、cppからヘッダーファイルを参照できるようになりますか?
下記は、ビルドが失敗した際の簡略版です。
//ヘッダーファイル #ifndef AAA_H #define AAA_H class AAA; class AAA { public: /** * @brief デフォルトコンストラクタ */ AAA(); /** * @brief デストラクタ */ virtual ~AAA(); }; #endif // ANALYZEGAZEDIRECTIONFACADE_H
//cppファイル #include "AAA.h" /** * @brief デフォルトコンストラクタ */ AAA::AAA() { //m_CalibrationInfo.init();//キャリブレーションが必要になったら実装する。 } /** * @brief デストラクタ */ AAA::~AAA() { }
下手な説明で申し訳ありませんが、よろしくお願いします。
AAAクラスを呼び出しているBBBクラスのヘッダーファイルとcppファイルも記載します。
//BBB.h AAAクラスを呼び出している側 //#include "AAA" class BBB; class AAA; class BBB { friend class BBBTest; protected: AAA* m_AAA; public: /** * @brief デフォルトコンストラクタ */ BBB(); /** * @brief デストラクタ */ virtual ~BBB(); }
//BBB.cpp #include "BBB.h" #include "AAA.h" /** * @brief デフォルトコンストラクタ */ BBB::BBB() :m_AAA(nullptr) { m_AAA = new(std::nothrow) AAA; } /** * @brief デストラクタ */ BBB::~BBB() { if (nullptr != m_AAA) { delete m_AAA; } }

回答4件
あなたの回答
tips
プレビュー