我目前正在尝试更多地了解 C++ 中的面向对象设计(熟悉 Java)并且遇到了一些困难。我正在尝试将这个项目放在一起,以便在使用 SFML 构建的游戏中学习这些原则,用于图形和音频。我有以下两个文件。
世界对象.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
世界对象.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++ 的多重继承模型。继承模型。