【发布时间】:2021-08-10 15:39:21
【问题描述】:
我是 C++ 新手,我用 SFML 开始了一个项目。我需要一个可以处理精灵的类,所以我这样做了:
#pragma once
#include <SFML/Graphics.hpp>
#include <iostream>
class Particle
{
private:
sf::Sprite **sprite;
public:
Particle(sf::Sprite* sprite)
{
this->sprite=&sprite;
};
~Particle();
void setPosition(sf::Vector2f newPos)
{
**sprite.setPosition(newPos);
}
};
我想用指针访问某个精灵,并将该精灵设置为类私有变量,但我遇到错误“表达式必须具有类类型但它的类型为“sf::Sprite **”。精灵变量需要被所有函数访问所以,我想在本地设置这个类。有没有更好的方法来做到这一点?
【问题讨论】:
-
为什么要指向指针?这是没有意义的。特别是因为指针将无效(您使
this->sprite指向 local 变量sprite,一旦Particle构造函数结束,该变量将不复存在)。 -
(*sprite)->setPosition(newPos)。但说真的,去掉双指针,这里没有理由。 -
另外
sf::Sprite是一个轻量级对象。甚至不需要使用 1 个指针。只需按值存储即可。 -
@HattedRooster 我需要在粒子类中本地使用精灵。如何在构造函数外使用精灵指针?
标签: c++ oop pointers function-pointers sfml