0

いくつかの変数を別のクラスに設定するクラスがありますが、エラーが発生して機能しないようです。

だから私はこれを持っています:


MainMenu::MainMenu(std::map<std::string,std::string>& theme){ 
    CreateSprite Background(theme["Background"]);
}

void create(sf::RenderWindow& output){
    output.draw( Background.callback() );
}

そのヘッダー:


class MainMenu
{
private:

CreateSprite Background;

public:
MainMenu(std::map<std::string, std::string>&);
void create(sf::RenderWindow&);

};

問題は私が得ることです:

error C2512: 'CreateSprite' : no appropriate default constructor available

私のクラスCreateSpriteは次のように設定されています:


CreateSprite::CreateSprite(std::string& imagefile) {

if(!image.loadFromFile(imagefile)){
    exit(2);
}

sprite = sf::Sprite(image);
}

sf::Sprite CreateSprite::callback(){
return sprite;
}

headerこのクラスに関連するものは次のとおりです。


class CreateSprite
{
public:

CreateSprite(std::string&);
sf::Sprite callback();

private:

sf::Texture image;
sf::Sprite  sprite;

};

私は何を間違っていますか?

4

1 に答える 1

1

MainMenuメンバーが既に宣言されていると思いBackgroundます。メンバー初期化子から初期化する必要があります。

MainMenu::MainMenu(std::map<std::string,std::string>& theme){ 
    CreateSprite Background(theme["Background"]);
}

MainMenu::MainMenu(std::map<std::string,std::string>& theme)
:Background(theme["Background"])
{     
}
于 2012-11-13T03:03:04.510 に答える