C++のクラス、なぜか値が代入されない

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

C++のクラス、なぜか値が代入されない

#1

投稿記事 by cupa » 2年前

今までC言語をやっていたので、それの拡張のC++をやってみようと思い、やり始めたのですが・・・
メンバ変数に値が代入できません。

下のソースは弾を追加するAddBullet()で引数を受け取ってそれをメンバ変数に入れて、テストとしてbullet->m_xを表示させているのですが、0が表示されます。実際は後に移動と描画の処理も書いたのですが、それでうまくいかなかったので追加(AddBullet())だけにしたのですがやはりうまく代入されていませんでした・・・

コード:

#include "DxLib.h"
#include <math.h>

const int BulletMax = 1024;

class CBaseBullet {
public:
	double m_x, m_y;
	double m_vx, m_vy;
	double m_ang, m_spd;
	bool m_used;
};

CBaseBullet bullets[BulletMax] = {0};

void AddBullet(double x, double y, double ang, double spd) {
	for (int i = 0; i < BulletMax; i++) {
		if (!bullets[i].m_used) {
			CBaseBullet* bullet = &bullets[i];
			bullet->m_x = x;
			bullet->m_y = y;
			bullet->m_ang = ang;
			bullet->m_spd = spd;

			bullet->m_vx = cos(bullet->m_ang) * bullet->m_spd;
			bullet->m_vy = sin(bullet->m_ang) * bullet->m_spd;

			bullet->m_used = true;
		}
	}

	//DrawFormatString(0, 0, GetColor(255, 255, 255), "%d", bullets[0].m_x);
}

int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int CmdShow)
{
	ChangeWindowMode(TRUE);
	if (DxLib_Init() == -1) return -1;
	SetDrawMode(DX_SCREEN_BACK);

	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
		ClearDrawScreen();
		clsDx();

		AddBullet(400, 200, 1.57, 5);

		ScreenFlip();
	}

	DxLib_End();
	return 0;
}

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: C++のクラス、なぜか値が代入されない

#2

投稿記事 by あたっしゅ » 2年前

東上☆海美☆「
ちゃんと初期化されてるみみ。

//DrawFormatString(0, 0, GetColor(255, 255, 255), "%d", bullets[0].m_x);

DrawFormatString(0, 0, GetColor(255, 255, 255), "%f", bullets[0].m_x);

double 型浮動小数点数値を受けるのは、%f みみ。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

cupa
記事: 117
登録日時: 2年前

Re: C++のクラス、なぜか値が代入されない

#3

投稿記事 by cupa » 2年前

あったしゅさんご回答ありがとうございます。
完全なケアレスミスですね・・・(ちゃんと描画できました)

その後、描画や移動も追加したのですが、何故か描画されませんでした。
原因を探っていくうちに、DrawCircleAA()(その後DrawCircle()とあまり変わらなかったのでDrawCircle()にしました)の引数を一つ抜けていて(頂点の数)描画できないということでした。(言い訳になりますがエラーなくて気づくのが遅くなりました...)ちゃんとリファレンスを読まないとだめですね。

このたびもありがとうございました。

cupa
記事: 117
登録日時: 2年前

Re: C++のクラス、なぜか値が代入されない

#4

投稿記事 by cupa » 2年前

余談にはなりますが、4/1から保護されない通信というのがずっと表示されていますね・・・(証明書?)

返信

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