c++ - 如何使用 C++ 中的 SFML 库初始化资产?
问题描述
我一直在开发一个简单的坦克游戏作为 SFML 中的一个项目。这是我第一次使用这个库,在创建 Assets 对象时遇到了一些问题:
游戏标题:
class Game
{
Assets as;
}
资产标题:
Class Assets
{
Assets() {
loadTextures();
loadSprites();
}
public:
Texture t1;
Sprite s1;
public:
void loadTextures();
void loadSprites();
}
资产 cpp 文件:
void Assets::loadTextures()
{
if (!t1.loadFromFile("images/tank.png"))
cout << "Error 42 - File not found " << endl;
}
void Assets::loadSprites()
{
s1.setTexture(t1);
}
Source.cpp中的主要功能:
int main(int argc, char ** argv)
{
Game game;
return 0;
}
我有一个错误和 2 个注释。错误:'Game::Game(void)':试图引用已删除的函数
注意:编译器在这里生成了'Game::Game'
注意:“Game::Game(void)”:函数被隐式删除,因为基类调用了已删除或无法访问的函数“Assets::Assets(void)”
当我尝试初始化 Assets 对象时,所有这些都会出现,我不知道为什么。
解决方案
资产默认构造函数是私有的,确保它是公共的。
Game 有一个 Assets 对象作为成员。这在创建游戏时默认构造。默认构造函数是私有的,因此无法创建资产对象。
推荐阅读
- arrays - 无法在 Swift 4 中使用 firstIndex:where
- verilog - 为什么iverilog 抱怨这个表达式/端口宽度?
- sql - 数据表中的自定义分页
- python - Unable to use "scheme" attribute when plot GeoDataFrame
- css - 是否值得为 IE 或任何其他旧版本指定某些属性?[向后兼容]
- ios - Swift - 在我的项目中获得零,而我正在尝试通过 cellForItem 访问项目
- google-cloud-pubsub - Cloud Pub/Sub 适用于特定区域。这是什么意思?请确认
- sql - 如何仅从下表中获取数值。每次长度可能会有所不同
- graphql - SuiteCRM 与 Graphql 的集成
- swift - Parsing Infix Mathematical Expressions in Swift Using Regular Expressions