2017-11-11 20 views
-2
#include "box.h" 

box::box() 
{ 
    boxX= 50.0f; 
    boxY= 50.0f; 


    box.setSize(Vector2f(boxX, boxY)); 
    box.setFillColor(Color::Red); 


} 

box::~box() 
{ 
} 

void box::Update(RectangleShape plr) 
{ 
    *boxXPtr= 550.0f; 
    *boxYPtr= 550.0f; 

    box.setSize(Vector2f(boxX, boxY)); 
} 

void box::Draw(RenderWindow & window) 
{ 

    window.draw(box); 
} 

更新機能が実行されても、表示されるボックスは50x50です。私は元の値がポインタを使用するときに変更されたと考えていましたが、値は関数に関係なく変更されています。C++関数内の元の変数の値を変更するにはどうすればよいですか?

#ifndef BOXP_H 
#define BOXP_H 
#include<SFML\Graphics.hpp> 
using namespace sf; 
class BoxP 
{ 
public: 
    BoxP(); 
    ~BoxP(); 

protected: 
    RectangleShape box; 

    float boxX; 
    float boxY; 

    float* boxXPtr= &texBoxX; 
    float* boxYPtr= &texBoxY; 
}; 

#endif 

私は基本クラスの.hを含めていくつかのものを変更しました。それでも同じ問題があります。これまでの援助のための

おかげ

+0

あなたの 'box.h'ファイルを表示してください。 –

+0

'textBoxX'と' texBoxY'とは何ですか?クラス宣言も表示できますか? – HatsuPointerKun

+0

ここで、 'boxXPtr'と' boxYPtr'は 'box :: Update()'と呼ばれていますが、どこにあるのでしょうか?見える?なぜ 'Box'のコンストラクタは同じ名前の新しいローカル変数を作成し、すぐにそれを破棄するのですか? –

答えて

4

二つの文は明らかにクラスのメンバーをシャドーイングあるinstantatedする新しい変数、原因

float* boxXPtr= &texBoxX; 
float* boxYPtr= &texBoxY; 

boxXPtr= &texBoxX; 
boxYPtr= &texBoxY; 

は修正です。

+2

initリストの値を設定するのは、通常は実際の修正です;) –

関連する問題