ある関数で読み込んだ画像をクラスで共有したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
moba
記事: 82
登録日時: 9年前

ある関数で読み込んだ画像をクラスで共有したい

#1

投稿記事 by moba » 9年前

お世話になります。
VC++(2010Express)/Dxlibで取り組んでいます。
マップを表示する仕組みを考えていて、だいたい以下のように取り組みました。

コード:

//ヘッダファイル
class MAP
{
public:
	int tileDiv[40];
	MAP(){ LoadDivGraph("(画像のパス)",40,8,5,32,32,tileDiv) }
};

//cppファイル
void DrawMap(){
		//LoadDivGraph("(画像のパス)",40,8,5,32,32,tileDiv);//これを入れれば表示できる
		DrawGraph(32,32,tileDiv[0],TRUE);//このままでは表示されない
}
main関数からMAPクラスをインスタンス化して、DrawMap()を呼び出しました。
するとコメント文の通り、DrawMap()内で再び画像を読み込まなければ何も表示されませんでした。
MAP()が終わっても読み込んだ画像は開放されず、MAPクラスのメンバ変数tileDivにハンドルが保存されたままで、DrawGraph()の1行で表示できると僕は予想していました。なぜ表示できないのか教えていただけませんか。

hide

Re: ある関数で読み込んだ画像をクラスで共有したい

#2

投稿記事 by hide » 9年前

DxLib_Init() より前にMAPクラスをインスタンス化しているとか?
コードが足らないと予想にしかならないね。

moba
記事: 82
登録日時: 9年前

Re: ある関数で読み込んだ画像をクラスで共有したい

#3

投稿記事 by moba » 9年前

回答ありがとうございます。
入り組んでいるので、その部分だけ書きなおしてきます。
書きなおしたらまた貼りますね

moba
記事: 82
登録日時: 9年前

Re: ある関数で読み込んだ画像をクラスで共有したい

#4

投稿記事 by moba » 9年前

うおおおおおおおおおおおお
hideさん、それでした! ヒープ領域を破壊(?)するバグもなおって、あなたのおかげで僕の10時間が実りました! ありがとうございます!
ちなみに、その発想がどのようにして得られたのか教えていただけませんか。

hide

Re: ある関数で読み込んだ画像をクラスで共有したい

#5

投稿記事 by hide » 9年前

1行分をコピーしただけなら変わるのは順番ぐらいですから。
tileDivがpublicになってたりとあまりなれてなさそうだったのでそう思っただけです。

というか、ちょくちょくそのミスを見かけるのです。

moba
記事: 82
登録日時: 9年前

Re: ある関数で読み込んだ画像をクラスで共有したい

#6

投稿記事 by moba » 9年前

やはり経験が無いと分からないものなのでしょうか。
これからも、どうしても調べて分からない時は質問させていただこうと思います。ありがとうございました。

hide

Re: ある関数で読み込んだ画像をクラスで共有したい

#7

投稿記事 by hide » 9年前

この場合はDxLibのログになんか残ったりしないんでしたっけ?
残るのだったら、画像読み込めてないおかしいなログ見ようで10分解決出来たかもしれません。
あとはtileDivの変数の中身をprintfDxしてみるとか。
ブレークポイントおいたりでしっかり通ってるかチェックしたり。

経験も大事ですが、バグに対して使えるブキを増やしていきましょう。

moba
記事: 82
登録日時: 9年前

追加の質問

#8

投稿記事 by moba » 9年前

ブキ、手にしたいですね。

Dxlibのログはたぶん画面下の「出力」のウィンドウに出るのですよね。
画像を読み来ないというログを見た気がするのですが、他の理由と思いこみ、暫定的な対応をして忘れてしまっていました。

tileDivの中身は、クイックウォッチをしたら、[0]が-1、[1~]が0だったような気がします。
読みこめていたらアドレスが入っているのでしょうね。もうちょっと頭を働かせたかったです。

閉鎖

“C言語何でも質問掲示板” へ戻る