我目前正試圖在C++(熟悉Java)中學習更多關於面向對象的設計,並且遇到了一些問題。我正在嘗試將這個項目放在一起,以在使用SFML構建圖形和音頻的遊戲中學習這些原則。我有以下兩個文件。這個私有變量是如何「未在此範圍內聲明的」?
WorldObject.h
#ifndef WORLDOBJECT_H
#define WORLDOBJECT_H
#include <SFML/Graphics.hpp>
#include <string>
#include "ImageManager.h"
class WorldObject
{
private:
sf::Sprite _sprite;
void SetImagePath(std::string path);
sf::Sprite GetGraphic();
};
#endif
WorldObject.cpp
#include "WorldObject.h"
void WorldObject::SetImagePath(std::string path)
{
_sprite.SetImage(*gImageManager.getResource(path));
}
sf::Sprite GetGraphic()
{
return _sprite;
}
我沒有看到任何對這些有任何問題,可是當我試圖編譯他們,我收到來自g ++的以下錯誤:
WorldObject.cpp: In function ‘sf::Sprite GetGraphic()’:
WorldObject.cpp:9: error: ‘_sprite’ was not declared in this scope
make: *** [WorldObject.o] Error 1
我在這段代碼中遺漏了什麼?試圖瞭解設置繼承層次結構的正確方式在遊戲開發中造成了迄今爲止最多的問題,但我知道這主要是由於我更習慣於使用Java的繼承模型而不是C++的多元繼承模型。