提示コードのコメント部で囲ってあるコードですがなぜ以下のエラーが発生するのでしょうか? エラーが4件起きているのですが何が悪いのか理解出来ません。
エラー1「 "std::array<std::array<Stage::MapChip, 10Ui64>, 10Ui64>" から "std::array<std::array<MapChip, 10Ui64>, 10Ui64>" への適切なユーザー定義変換が存在しません 」
エラー2「 'Stage::getMap': 再定義されています。異なる基本型です。 」
エラー3「 'std::array<std::array<MapChip,10>,10> Stage::getMap(void)': オーバーロード関数は、'std::array<std::arrayStage::MapChip,10,10> Stage::getMap(void)' と戻り値の型のみが異なります。 」
エラー4「 宣言に "std::array<std::array<Stage::MapChip, 10Ui64>, 10Ui64> Stage::getMap()" 」
cpp
1#ifndef ___STAGE_HPP_ 2#define ___STAGE_HPP_ 3 4#include "../Actor_2D.hpp" 5#include "Block.hpp" 6#include "../Game.hpp" 7 8#include <vector> 9#include <array> 10#include <iostream> 11#include <algorithm> 12 13// 前方宣言 14 15class Stage : public Actor_2D 16{ 17public: 18 19 20 21 Stage(class Game* g, const char* fileName); //コンストラクタ 22 ~Stage(); //デストラクタ 23 24 void Update() override; //更新 25 void Draw() override; //描画更新 26 27 28 // 描画UV座標 29 typedef struct DrawUV 30 { 31 glm::vec2 start; //ここから 32 glm::vec2 end; //ここまで 33 34 }DrawUV; 35 36 // マップチップの種別 37 typedef enum MapChipType 38 { 39 Block, //破壊 可能 40 notBreak_Block, //破壊 不可 41 Item, //アイテム 42 43 Invalid, //無効 44 } MapChipType; 45 46 47 // マップチップの情報 48 typedef struct MapChip 49 { 50 MapChipType type; //種類 51 glm::vec2 mPosition; //座標 52 DrawUV UV; //描画範囲 53 }MapChip; 54//////////////////////////////////////////////////////////////////////////////////////// 55 std::array< std::array<MapChip, 10>, 10> getMap(); //マップセル取得 56/////////////////////////////////////////////////////////////////////////////////////// 57private: 58 59 std::shared_ptr<Sprite> mSprite; //スプライトクラス 60 61 std::array< std::array<MapChip,10>,10> mMap; //マップデータ 62 63 glm::vec2 blockUV; //ブロックのUV座標 64 glm::vec2 notBreak_blockUV; //固定ブロックのUV座標 65}; 66 67#endif; 68
cpp
1#include "../../Header/Game/Stage.hpp" 2#include "../../Header/Actor_2D.hpp" 3 4#include "../../Header/Game.hpp" 5 6#include <vector> 7#include <array> 8#include <iostream> 9#include <algorithm> 10 11 12struct MapChip; 13 14// コンストラクタ 15Stage::Stage(class Game* g, const char* fileName) : Actor_2D() 16{ 17 Owner = g; // Game クラス 18 mSprite = std::make_shared<Sprite>(Owner,fileName); //スプライトクラス 19 20 21 22 23 24 // マップ配列を初期化 25 MapChip m{ 26 MapChipType::Invalid, //マップの種類 27 glm::vec2(0,0), //座標 28 DrawUV{ glm::vec2(0,0),glm::vec2(0,0)} //描画UV座標 29 }; 30 31 32 for (int i = 0; i < mMap.size(); i++){ 33 std::fill(mMap.at(i).begin(), mMap.at(i).end(), m); 34 } 35 36 //画面の左上 37 const int width = -(int)(SCREEN_WIDTH / 2); // 38 const int height = (int)(SCREEN_HEIGHT / 2); // 39 40 // 座標を設定 41 for (int y = 0; y < mMap.size(); y++) 42 { 43 for (int x = 0; x < mMap.at(y).size(); x++) 44 { 45 // 46 mMap.at(y).at(x).mPosition.x = (float) (width + (CELL * x)); 47 mMap.at(y).at(x).mPosition.y = (float) (height - (CELL * y)); 48 49 mMap.at(y).at(x).type = MapChipType::Block; // 50 51 // 52 mMap.at(y).at(x).UV.start = glm::vec2(0, 0); 53 mMap.at(y).at(x).UV.start = glm::vec2(CELL, CELL); 54 55 } 56 } 57 58} 59 60// 描画 61void Stage::Draw() 62{ 63 for (int y = 0; y < mMap.size(); y++) 64 { 65 for (int x = 0; x < mMap.at(y).size(); x++) 66 { 67 68 69 mSprite->DrawGraph(mMap.at(y).at(x).mPosition, mMap.at(y).at(x).UV.start, mMap.at(y).at(x).UV.end); 70 } 71 } 72 73} 74////////////////////////////////////////////////////////////////////////////////// 75std::array< std::array<MapChip, 10>, 10> Stage::getMap() 76{ 77 return mMap; 78} 79////////////////////////////////////////////////////////////////////////////////// 80 81// 更新 82void Stage::Update() 83{ 84 85} 86 87 88 89// デストラクタ 90Stage::~Stage() 91{ 92 93}
回答1件
あなたの回答
tips
プレビュー