我有一个基于 SFML gamefromscratch.com 教程的类,称为“VisibleGameObject”。在这个类中,是一个私有变量“_sprite”,以及一个我尝试作为受保护和公共的“getSprite()”函数。(即使是公共的,它仍然说“_sprite”是私有的,即使公共函数返回变量)。
在我的 OnRender 类中,我创建了两个 VisibleGameObjects。
VisibleGameObject _testtile1;
VisibleGameObject _cursorSprite;
但是当我绘制精灵时,我得到了错误:在这个上下文中。
_mainWindow.draw(_cursorSprite._sprite);
或者,我尝试了(getSprite() 被保护或公开)。
_mainWindow.draw(_cursorSprite.getSprite());
但总是,“错误:'sf::Sprite VisibleGameObject::_sprite' 是私有的。错误:在此上下文中”
对我来说没有任何意义,因为
1) _sprite 是 VisibleGameObject 的一个变量。它可能是私有的,但除了它自己的原始“VisibleGameObject”类之外,其他任何东西都不能访问它。我认为类可以访问自己的变量,即使它们是另一个类中的新实例化对象?
2) getSprite() 是公共的,并返回私有变量,但仍然说 _sprite 是私有的?这对我来说毫无意义!我所学到的关于 Getter 和 Setter 的所有内容都表明,公共函数可以返回一个私有变量,因为这就是这个 Getter 的全部意义所在。
sf::Sprite& VisibleGameObject::getSprite()
{
return _sprite;
}
class VisibleGameObject
{
public:
VisibleGameObject();
virtual ~VisibleGameObject();
private:
sf::Sprite _sprite;
protected:
sf::Sprite& getSprite();
或者
public:
sf::Sprite& getSprite();