我有一个类将一些变量设置到另一个类,但我似乎无法使它工作,因为我收到错误。
所以我有这个:
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;
};
我的错误是什么?
答案 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"])
{
}