C++、teratailともに初心者です。
以下の問題について回答いただけますと幸いです。
また、こちらの都合で申し訳ございませんが、
ソースコードの一部のみの表示、クラス名等の変更を行っております。
前提・実現したいこと
C++で複数のファイル、クラスを使用してメッセージ表示ダイアログのOPEN、CLOSEを行いたいです。
下記のソースコードに記載のあるDlgクラスのinit関数、show関数をShowクラスで、
close関数をCloseクラスで実行したいです。
別のクラスで生成しているインスタンスの関数を他の複数のクラスで実行したいのが今回の本題です。
引数を使用するのはできないのでその他の方法でお願いいたします。
つたない説明で申し訳ございませんが、ご回答いただけますと幸いです。
発生している問題・エラーメッセージ
Show.cpp:(.test+0x2027):`Dlg::m_dlg`に対する定義されていない参照です Close.cpp:(.test+0xddb):`Dlg::m_dlg`に対する定義されていない参照です
該当のソースコード
Dlg.cpp
cpp
1#include "Dlg.hpp" 2 3bool Dlg::init(void) 4{ 5 // ダイアログの初期設定 6} 7 8bool Dlg::show(void) 9{ 10 // ダイアログのOPEN処理 11} 12 13bool Dlg::close(void) 14{ 15 // ダイアログのCLOSE処理 16}
Dlg.hpp
cpp
1class Dlg 2{ 3 public: 4 bool init(void); 5 bool show(void); 6 bool close(void); 7};
Info.hpp
cpp
1#include "Dlg.hpp" 2 3class Info 4{ 5 public: 6 Dlg m_dlg; 7};
Show.cpp
cpp
1bool Show::dlgshow(void) 2{ 3 Info::m_dlg.init(); 4 Info::m_dlg.show(); 5}
Show.hpp
cpp
1#include "Info.hpp" 2 3class Show 4{ 5 private: 6 bool dlgshow(void); 7};
Close.cpp
cpp
1bool Close::dlgclose(void) 2{ 3 Info::m_dlg.close(); 4}
Close.hpp
#include "Info.hpp" class Close { private: bool dlgclose(void); };
補足情報(FW/ツールのバージョンなど)
G++ (GCC) 4.4.7
Linux(Red Hat 6.10)
###追記
引数の使用は絶対にダメということではないですが、
できれば使いたくなかったので他の方法がもしあればと思い質問しました。
引数、グローバル変数でしか実装できないのでしょうか。
もしないのであればグローバルにするのは一番避けたいので引数を使うしかなさそうですね。
回答3件
あなたの回答
tips
プレビュー