重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

自分で作った class CPatchModel というクラスを 今まで OnDrawのなかで CPatchModel cpatchmodel; というふうに 宣言してつかっていましたが。グローバル宣言にしたところ つまり OnDrawの外で宣言したのですが、うまくうごかなくなりました。なにか こころあたりのあるかたは 教えてください。なんでもいいです。classの定義のあとに 宣言しているので、認識できないと いうわけでは ないはずです。

A 回答 (2件)

ファイルが違うとかでしょうか。


同じファイルにその定義はありますか?
    • good
    • 0
この回答へのお礼

問題解決しました。ご協力ありがとうございました。
コンストラクタが OnDrawのたびに よびだされていたのが グローバルにしたことで よびだされなくなったのが 原因です。

お礼日時:2004/12/14 13:59

関数の中でオート変数としてオブジェクトを構築した場合、OnDrawが呼び出された時にcpatchmodelのコンストラクタが実行されます。

OnDrawからリターンする時には、cpatchmodelのデストラクタが実行されます。
コンストラクタとデストラクタはOnDraw呼び出し毎に毎回呼び出されます。

クラスCPatchModel をグローバル変数にした場合は、プロセス(プログラム)の起動時にcpatchmodelのコンストラクタが呼び出され、プロセスの終了時にcpatchmodelのデストラクタが呼び出されます。
コンストラクタとデストラクタはプログラム起動・終了時に1回のみ呼び出されます。

グローバルにして上手く動作しなくなったのであれば、CPatchModelクラスの初期化(コンストラクタ等)が1度しか呼び出されなくなるので、そこに問題があると思います。
つまり、OnDrawを呼び出してもcpatchmodelのコンストラクタは呼び出されなくなります。
そのへんをもう一度確認してみてはどうですか?
    • good
    • 0
この回答へのお礼

あ たぶん それが 原因です。今まで コンストラクタが よびだされてたのに グローバルにしたことで よびだされなくなった・・・ これで 説明がつきます。 ありがとうございました。

お礼日時:2004/12/14 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!