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

时间:2011-06-06 03:27:50

标签: c++ sfml

我对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”将文件加载到类的私有图像成员中。我试图这样做:

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的未定义引用

1 个答案:

答案 0 :(得分:1)

从术语长详细错误,我只是猜测你可能会对链接器错误感到困惑。那是因为,您可能忘了定义,

static sf::Image Image;

.cpp文件中或忘记将.cpp文件与您的编辑内容链接在一起。 在全局范围中的相应static文件中定义您的.cpp成员。

sf::Image Missile::Image;