ページ 11

C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月05日(土) 21:06
by Ofu
初めまして、未熟者のOfuと申します。どうぞよろしくお願いいたします。
私はWindows10でVisual Studio Community 2015とDXライブラリを使っており、現在マップを表示してキャラを動かすということをやりたいのですが、下記のようなコード(エラーが起きた原因っぽい部分のみ)で "C2280 CharaData::CharaData(void) 削除された関数を使用しようとしています" というよくわからないエラーが出てきたのですが、何が原因なのか、どう直せばいいのかわかりません。誰か教えて頂けないでしょうか。

コード:

/* CharaData.h */
// 構造体群
struct ItemData {							// アイテムデータ 
	const int ItemCode;							// アイテムコード
	int Graphic;								// グラフィックデータ
};

struct CharaData {							// キャラクターデータ
	const int CharaCode;						        // キャラコード
	int Graphic[64];							       // キャラのグラフィックハンドル変数
	int X, Y;									      // キャラの座標変数
	int HP, MP, MHP, MMP;						     // HPとMP,最大HPと最大MP
	int Atack, Defense, MinAtack, MinDefense;	    // 攻撃力と守備力,攻撃力減少率と守備力減少率
	int Speed;									   // 移動スピード
	CharaState State;							  // 状態異常
	int Level;									 // レベル
	int MinArea, MaxArea;						// 出現階層
};

// ここまで



// キャラデータ
// プレイヤー
extern CharaData Inaha;						// 主人公(イナハ)のキャラデータ変数

/* 中略 */

コード:

/* CharaData.cpp */
#include "CharaData.h"

// キャラデータ 初期化もここですること
// プレイヤーキャラ
CharaData Inaha;			// 主人公(イナハっていう名前)のキャラデータ変数 コンパイラはここがエラー原因として指摘したのですが…

/* 中略 */

コード:

/* LoadGraph.cpp */
#include "LoadGraph.h"

int MapChip1[MapChip1X * MapChip1Y];

int MapData[][MapLayer][ChipY][ChipX] = {
/* 中略 */

int LoadGameImage(){	// ゲーム使用画像インプット

	// キャラ画像インプット
	// プレイヤー
	LoadCharaChip("Material\\CharaChip\\Inaha.png", Inaha.Graphic);					// イナハ

	// モンスター
	LoadCharaChip("Material\\CharaChip\\スライム.png", Slime.Graphic);				// スライム

	LoadCharaChip("Material\\CharaChip\\ばけトマト.png", BakeTomato.Graphic);		// ばけトマト

	// ここまで


	// マップチップインプット
	// 標準
	LoadDivGraph("Material\\MapChip\\MapChip1.png", MapChip1X*MapChip1Y , MapChip1X, MapChip1Y, CHARA_CHIP_SIZE, CHARA_CHIP_SIZE, MapChip1);

	// オートタイル

	// ここまで


	// アイテム画像インプット
	// 普通
	Zassou.Graphic = LoadGraph("Material\\ItemChip\\Grass.png");		// 雑草

	// 装備

	// ここまで


	return 0; // 読み込み成功なら0
}



int DrawMap() {		// マップ描画
	
	for (int DrawedLayer = 0; DrawedLayer < MapLayer-2; DrawedLayer++) {	// マップ描画ループ

		for (int DrawedY = 0; DrawedY < ChipY; DrawedY++) {	

			for (int DrawedX = 0; DrawedX < ChipX; DrawedX++) {

				int DrawMapData = MapData[0][DrawedLayer][DrawedY][DrawedX]; // マップマスデータ読み込み

				if (DrawMapData <= 0) DrawGraph(DrawedX*ChipSize, DrawedY*ChipSize, MapChip1[DrawMapData], TRUE); // マップマス描画 チップ番号0ならやらない

			}
		}
	}
	return 0;
}


int LoadCharaChip(const TCHAR* FileName, int* HandleBuf) {		// キャラチップ読み込み
	LoadDivGraph(FileName, CHARA_CHIP_X*CHARA_CHIP_Y, CHARA_CHIP_X, CHARA_CHIP_Y, CHARA_CHIP_SIZE, CHARA_CHIP_SIZE, HandleBuf);
	return 0;
}

コード:

/* GameMain.cpp */
/* 中略 */
void InitGame() { // ゲームスタート時処理

	for (int CountedY = 0; CountedY < ChipY; CountedY++) {				// 主人公位置検査
		for (int CountedX = 0; CountedX < ChipX; CountedX++) {

			int CharaPosition = MapData[0][4][CountedY][CountedX];			// 座標検査

			if (CharaPosition == CHARACODE_Inaha) {
				Inaha.X = CountedX , Inaha.Y = CountedY;					// 主人公座標セット
				MapData[0][4][CountedY][CountedX] = 0;						// 後始末
			}
		}
	}

	return;
}
初投稿なので、なにか問題等ありましたら申し訳ございません。

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月05日(土) 21:59
by あんどーなつ
トピックとは関係ないのですが、Visual StudioのCommunity Editionのライセンス条項に関する日本語の情報ってどこかにないですか?

自分はこわいからProfessional使ってます。

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月05日(土) 22:08
by あんどーなつ
Ofu さんが書きました:"C2280 CharaData::CharaData(void) 削除された関数を使用しようとしています"
MSDNでC2280を検索すると下記ページがヒットしましたが、このエラーではないみたいですね。
https://msdn.microsoft.com/ja-jp/librar ... s.71).aspx

エラーメッセージの「C2280」をクリックするとヘルプのWebページが開くのではないかと思います。そのページを教えてもらえますか?

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月05日(土) 22:13
by あんどーなつ
URLが正しく貼れなかったみたいなので、再度書かせていただきます。

https://msdn.microsoft.com/ja-jp/librar ... s.71).aspx

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月06日(日) 00:47
by a5ua
CharaData構造体がconstメンバー変数CharaCodeを持っているため、
デフォルトコンストラクタによるオブジェクト構築ができないことがエラーの原因と思われます。
①CharaCodeのconstを外すか、
②以下のように、CharaCodeを初期化するためのコンストラクタを定義する必要があるでしょう。

コード:

struct CharaData {                          // キャラクターデータ
    CharaCode(int code) : CharaCode(code){}
    const int CharaCode;                                // キャラコード
    int Graphic[64];                                   // キャラのグラフィックハンドル変数
    int X, Y;                                         // キャラの座標変数
    int HP, MP, MHP, MMP;                            // HPとMP,最大HPと最大MP
    int Atack, Defense, MinAtack, MinDefense;       // 攻撃力と守備力,攻撃力減少率と守備力減少率
    int Speed;                                     // 移動スピード
    CharaState State;                             // 状態異常
    int Level;                                   // レベル
    int MinArea, MaxArea;                       // 出現階層

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月06日(日) 08:41
by Ofu
a5uaさん、ありがとうございました、やはりメンバにconstをつけるのはまずかったみたいですね。
CharaData構造体とItemData構造体のCharaCodeとItemCodeについてたconstを外せば正常終了しました。
 

コード:

struct ItemData {							// アイテムデータ 
	int ItemCode;							// アイテムコード
	int Graphic;								// グラフィックデータ
};

struct CharaData {							// キャラクターデータ
	int CharaCode;						        // キャラコード
	int Graphic[64];							       // キャラのグラフィックハンドル変数
	int X, Y;									      // キャラの座標変数
	int HP, MP, MHP, MMP;						     // HPとMP,最大HPと最大MP
	int Atack, Defense, MinAtack, MinDefense;	    // 攻撃力と守備力,攻撃力減少率と守備力減少率
	int Speed;									   // 移動スピード
	CharaState State;							  // 状態異常
	int Level;									 // レベル
	int MinArea, MaxArea;						// 出現階層
};

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月06日(日) 16:39
by あたっしゅ
>トピックとは関係ないのですが、Visual StudioのCommunity Editionのライセンス条項に関する日本語の情報ってどこかにないですか?

https://www.microsoft.com/ja-jp/dev/pro ... unity.aspx

これじゃ、不十分ですか ?

Re: C2280 削除された関数を使用しようとしています というエラーが出たのですが…

Posted: 2016年11月06日(日) 19:50
by あんどーなつ
あたっしゅ さん

十分です。
(しかし、そのように書かれていたからとしても長年Visual Studioを触ってきたおじさんには眉唾物なのですよ)