gpt4 book ai didi

c++ - 简单的 SFML/C++ 问题,对文字字符串和静态成员感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:50 25 4
gpt4 key购买 nike

我对 http://www.sfml-dev.org/tutorials/1.6/graphics-sprite.php 的代码有点困惑

即底部的代码详细说明了“导弹”类:

class Missile
{
public :

static bool Init(const std::string& ImageFile)
{
return Image.LoadFromFile(ImageFile);
}

Missile()
{
Sprite.SetImage(Image); // every sprite uses the same unique image
}

private :

static sf::Image Image; // shared by every instance

sf::Sprite Sprite; // one per instance
};

我正在尝试使用“Init”将文件加载到类的私有(private)图像成员。我正在尝试这样做:

if (!Missile::Init("missile.bmp")) return EXIT_FAILURE;\

然后继续声明该类的对象。但是,我遇到了冗长、冗长的错误,这让我觉得我不应该在那里放一个字符串,或者我遗漏了一些基本的东西。我对 C++ 有点陌生,所以语法仍然让我感到困惑,我已经看了很长时间,但无法弄清楚。我试过调用指针等,但我真的不知道下一步该怎么做。

编辑:我得到的错误是:

main.o: 在函数 Ship::Init(std::basic_string, std::allocator > const&) 中:main.cpp:(.text._ZN4Ship4InitERKSs[Ship::Init(std::basic_string, std::allocator > const&)]+0x10): 未定义对 Ship::Image 的引用main.o:在函数 Ship::Ship() 中:main.cpp:(.text._ZN4ShipC2Ev[_ZN4ShipC5Ev]+0x19): 未定义对 Ship::Image 的引用

最佳答案

从术语冗长错误来看,我只是猜测您可能对链接器错误感到困惑。那是因为,您可能忘记了定义,

static sf::Image Image;

.cpp 文件中,或者忘记将该 .cpp 文件与包含它的编译链接起来。在 global scope 的适当 .cpp 文件中定义您的 static 成员。

sf::Image Missile::Image;

关于c++ - 简单的 SFML/C++ 问题,对文字字符串和静态成员感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com