在 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);
我是 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);