我是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变量需要被所有函数访问,所以,我想将它本地设置为这个类。有更好的方法吗?
错误是因为
**sprite.setPosition(newPos);
与相同
**(sprite.setPosition(newPos));
也就是说,您尝试取消引用sprite.setPosition(newPos)
返回的。
为了解决这个错误(留下我在评论中提到的另一个问题(,您需要取消引用指针变量本身:
(*sprite)->setPosition(newPos);