私は最近捕まってしまった、と私はいくつかのアドバイスを使用することができます。 は理想的には、私がやりたいことは以下の通りです:問題は
- ファイル名のベクトルを作成spritebank
- に追加するすべてのスプライトを表す列挙を作成し、列挙を使用しては
- ベクトルに各ファイル名を追加しますすべてのロードされたファイル名を通過し、列挙型を使用して、特定の特性を有するスプライトを作成
が、第2のステップ(files.emplace()関数)these errorsを与え、第三段階(スイッチ(sprite_file))は異なるERROを与えますrsは、this->sprite_fileまたはsprite_fileを使用した場合に基づいています。どのようにこのアイデアを動作させるためのアイデアですか?
std::vector
がstd::map
のように動作しません:私が使用したコードは
//abstracted application class that starts the program//
std::vector<std::string> files;
class App : public Event
{
private:
bool Running; //Running flag
enum sprite_file
{
SPRITE_RING1 = 0,
SPRITE_RING2 = 1,
SPRITE_END = 2
};
SDL_Window* graphicsWindow; //The window
SDL_Renderer* graphicsRenderer; //The renderer
TTF_Font* globalFont; //The global font
Timer capTimer; //Frames per second cap timer
SpriteBank rings; //Collection of sprites
std::string currentSprite; //Filename of sprite in use
[...]
//abstracted initialization function within App//
//Initialize spritebank
if(!rings.Init(graphicsRenderer))
{
printf("Failed to load sprites!");
}
//Add two sprites
files.emplace(SPRITE_RING1, "media/img/ring/ring1.png");
files.emplace(SPRITE_RING2, "media/img/ring/ring2.png");
//Add two sprites
for(auto filename : files)
{
switch(this->sprite_file)
{
case SPRITE_RING1:
{
rings.AddSprite(filename,
40,
40,
40,
20,
20);
break;
}
case SPRITE_RING2:
{
rings.AddSprite(filename,
40,
40,
40,
20,
20);
break;
}
default: continue; break;
}
}
currentSprite = SPRITE_RING1;
エラーのスクリーンショットを投稿しないでください。あなたの質問にエラーを貼り付けてください。 – Cornstalks
あなたは 'files.emplace(SPRITE_RING1、" media/img/ring/ring1.png ");'で何をしようとしていますか?基本的に列挙型と文字列リテラルを 'std :: string'のコンストラクタに渡しています。 'std :: string'のコンストラクタがこれら2つの引数と何をすると思いますか? – Cornstalks