我的类默认构造函数出错

时间:2012-11-13 02:57:40

标签: c++

我有一个类将一些变量设置到另一个类,但我似乎无法使它工作,因为我收到错误。

所以我有这个:


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;

};

我的错误是什么?

1 个答案:

答案 0 :(得分: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"])
{     
}