CArrayの受け渡しについて


  2006-05-26 20:53:50  No: 61941

こんにちは。
環境は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で、どのよう渡す処理を記述したら良いのかわかりません。

教えてください。


Blue  2006-05-27 00:22:12  No: 61942

プログラム全体で使用する変数とかは、アプリケーションクラスにおくのですがどうでしょうか?

CXXXXAppに共通の変数を宣言し、(CXXXXApp*)AfxGetApp()->m_test のようにして変数を使う。


mikage  2006-05-27 00:55:31  No: 61943

まず、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にアクセスできるはずですがいかがでしょう??


Blue  2006-05-27 00:58:19  No: 61944

m_
ってことだから、メンバ変数じゃないのかなぁと思ってるんだけど違うのかな?


mikage  2006-05-27 01:06:36  No: 61945

本人じゃない人がレスするのはおかしいと思いますが、
class定義が完結している直後に宣言があるようなので、
大域変数であると解釈しました、
また渡し方が分からないというのはコンパイルが通らないという風に
勝手に脳内補完しました。

上記Test1.hの内容ではTest1.cpp, Test2.cppの両者で
#includeすると実態が2つ定義されています系の
コンパイルエラーとなるのではないでしょうか?


通りすがり2  2006-05-29 12:48:15  No: 61946

話がこんがらがるから
書いてないことを勝手にするのは補完イクナイ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加