こんにちは。
環境はWindowsXP、vc++.Net2003(MFC)です。
CArrayについて質問です。
ダイアログの遷移処理を作成してます。
test1(Test1.h、Test1.cpp)、test2(Test2.h、Test2.cpp)があります。
<Test1.h>
class c_test
{
public:
int koumoku1;
char koumoku2[256];
};
CArray<c_test,c_test&> m_test;
と宣言して、
<Test1.cpp>
DBのデータをm_testにセットしました。
ダイアログをtest1からtest2に遷移した際、
Test2にこのm_test(DBデータ入)を渡したいのですが、
test2.hにどのように宣言したらよいのか分かりません。
test1.cppで、どのよう渡す処理を記述したら良いのかわかりません。
教えてください。
プログラム全体で使用する変数とかは、アプリケーションクラスにおくのですがどうでしょうか?
CXXXXAppに共通の変数を宣言し、(CXXXXApp*)AfxGetApp()->m_test のようにして変数を使う。
まず、Test1.hのCArray宣言を以下のようにします。
CArray<c_test,c_test&> m_test;
↓
#ifndef _TEST1CPP
extern CArray<c_test,c_test&> m_test;
#else
CArray<c_test,c_test&> m_test;
#endif
そしてTest1.cppの#includeを以下のように変更
#include "Test1.h"
↓
#define _TEST1CPP
#include "Test1.h"
後はTest1.hをTest2.cppで#includeするだけで、
m_testにアクセスできるはずですがいかがでしょう??
m_
ってことだから、メンバ変数じゃないのかなぁと思ってるんだけど違うのかな?
本人じゃない人がレスするのはおかしいと思いますが、
class定義が完結している直後に宣言があるようなので、
大域変数であると解釈しました、
また渡し方が分からないというのはコンパイルが通らないという風に
勝手に脳内補完しました。
上記Test1.hの内容ではTest1.cpp, Test2.cppの両者で
#includeすると実態が2つ定義されています系の
コンパイルエラーとなるのではないでしょうか?
話がこんがらがるから
書いてないことを勝手にするのは補完イクナイ
ツイート | ![]() |