在 class 中设置指针

Set pointer in class

我是 c++ 的新手,我用 SFML 开始了一个项目。我需要一个可以处理 sprite 的 class,所以我这样做:

#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);
    }
};

我想用指针访问某个精灵,并将该精灵设置为 class 私有变量,但我遇到错误“表达式必须具有 class 类型但它具有类型“sf:: Sprite **”。所有函数都需要访问 sprite 变量,所以我想在本地将其设置为此 class。有更好的方法吗?

错误是因为

**sprite.setPosition(newPos);

相同
**(sprite.setPosition(newPos));

也就是说,您尝试取消引用 sprite.setPosition(newPos) returns.

要解决该错误(留下我在评论中提到的另一个问题),您需要取消引用指针变量本身:

(*sprite)->setPosition(newPos);