我目前正在尝试学习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++的多重继承模型。