C ++如何更改函数中原始变量的值?

时间:2017-11-11 20:45:25

标签: c++ class pointers reference sfml

#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。我认为在使用指向它的指针时会改变原始值,但是只有在函数内改变了值。

#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并更改了一些内容。还是有同样的问题。

感谢目前为止的帮助

1 个答案:

答案 0 :(得分:4)

这两个陈述

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

导致新变量即时显示,这显然是阴影类成员。

boxXPtr= &texBoxX;
boxYPtr= &texBoxY;

是修复。