【发布时间】:2018-04-24 20:28:44
【问题描述】:
#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 并更改了一些内容。仍然有同样的问题。
感谢到目前为止的帮助
【问题讨论】:
-
显示您的
box.h文件。 -
textBoxX和texBoxY是什么?你也可以显示类声明吗?我们需要Minimal Complete Verifiable Example,以便重现错误并提供帮助 -
box::Update()可以看到的boxXPtr和boxYPtr在哪里?又为什么Box的构造函数会创建新的同名局部变量并立即丢弃? -
如果您可以粘贴类声明将非常有用。我的回答可能正确,但声明会确认。
-
当
&boxX可以在任何地方使用时,boxXPtr的原因是什么?
标签: c++ class pointers reference sfml