Privé/Protégé variable “erreur: dans ce contexte”

J'ai une classe basé sur de la SFML gamefromscratch.com tutoriels, appelé "VisibleGameObject" au Sein de cette classe, est une variable privée "_sprite", ainsi qu'un "getSprite()" fonction que j'ai essayé comme à la fois protégé et public. (Même en tant que public, il est dit encore "_sprite" est privé, même si le public de la fonction retourne la variable).

Dans mon OnRender la classe, j'ai créer deux VisibleGameObjects.

VisibleGameObject _testtile1;
VisibleGameObject _cursorSprite;

Mais quand je dessine pour dessiner les sprites, j'obtiens l'erreur: dans ce contexte.

_mainWindow.draw(_cursorSprite._sprite);

sinon j'ai essayé (avec getSprite() protégé ou public).

_mainWindow.draw(_cursorSprite.getSprite());

Encore toujours, "erreur: 'sf::Sprite VisibleGameObject::_sprite' est privé. erreur: dans ce contexte,"

Ne fait aucun sens pour moi, parce que

1) _sprite est une variable de VisibleGameObject. Il peut être privé, mais il n'est pas consultée par autre chose que sa propre classe d'origine de "VisibleGameObject". Je pensais que les classes peuvent accéder à leurs propres variables, même quand ils sont un nouvel objet instancié dans une autre classe?

2) getSprite() est public, et retourne la variable privée, mais il est ENCORE en disant _sprite est privé? Cela n'a aucun sens pour moi! Tout ce que j'ai appris sur les Getters et les Setters, dit que le public de la fonction PEUT retourner une variable privée, comme c'est le point entier de ce Getter.

sf::Sprite& VisibleGameObject::getSprite()
{
return _sprite;
}




class VisibleGameObject
{
public:
VisibleGameObject();
virtual ~VisibleGameObject();

 private:
sf::Sprite  _sprite;



protected:
sf::Sprite& getSprite();

OU

public:
sf::Sprite& getSprite();
  • O.....k... parfois je crois que mon compilateur est buggé. J'ai juste essayé de faire getSprite() public, et maintenant ça fonctionne. Ne fonctionne toujours pas Protégées si, ou de faire _sprite Protégé. Et je ne comprends toujours pas pourquoi _sprite ne peut être accédé que par sa propre classe d'objet.
InformationsquelleAutor | 2013-05-02