0

画像を選択して返すか、何らかの方法で別のクラスに渡す単純な関数またはクラスを作成しようとしています。画像がどのタイプと見なされるかを知るのと同じくらい簡単ですか?または私は何か他のことをする必要がありますか?Windows8コンピューターでGNUGCCコンパイラーを使用してCode::Blocks10.05を実行しています。どんな助けでも大歓迎です。

Aestheteのおかげで、私はある程度の進歩を遂げました。今私はこれを持っています:

class Background{
    sf::Image BGI;
    sf::Sprite BG;
    Image& img;

    public:
    void rimage(std::string name){
        sf::Image extra;
        extra.LoadFromFile(name);
        img = extra;
    }
    void init(std::string name){
    BGI = img
    BG.SetPosition(0.f,0.f);
    BG.SetImage(BGI);

    }
};

しかし、私がそれを実行すると、私はこれを取得します:

 ...4 error: ISO C++ forbids declaration of 'Image" with no type 

また、

...10 error: 'img' is defined in this scope

SFMLを実行するために必要なライブラリを含めました。物事をきれいに保つために省略しました。上記のエラーが発生した行を調整して、わかりやすくしました。

imgは、Background内の一種のグローバル変数ではありませんか?Image&そして、私はそのタイプだと思いましたimg...ここで何を変更する必要がありますか?

4

1 に答える 1

3

loadメソッドも追加Imageのオブジェクトも必要ありません。このすべての処理はコンストラクターで実行できます。

class Background{
  private:
    // You only need an image and a background, if that.
    sf::Image BGI;
    sf::Sprite BG;

  public:
    // Use a constructor.
    Background(std::string name)
    {
      SetBackground(name, Vector2f(0.f, 0.f));
    }
    void SetBackground(std::string name, sf::Vector2f pos)
    {
      BGI.LoadFromFile(name);
      BG.SetImage(BGI);
      BG.SetPosition(pos);
    }
};

// Constructor loads image, sets image to sprite, and set sprite position.
Background bg("MyBackground.png");

// You can change the background image an position like so.
bg.SetBackgrond("newImage.png", Vector2f(10.f, 20.f));
于 2012-11-29T00:32:37.013 に答える