1

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への未定義の参照

4

1 に答える 1

1

長い冗長エラーという用語から、リンカーエラーと混同されている可能性があると推測しています。それは、あなたが定義するのを忘れたかもしれないからです、

static sf::Image Image;

ファイル内にあるか、そのファイルが含まれているコンパイルに.cppそのファイルをリンクするのを忘れた。グローバルスコープの適切なファイルでメンバーを.cpp定義します。static.cpp

sf::Image Missile::Image;
于 2011-06-06T03:37:00.397 に答える