C++通过继承隐藏变量
C++ Hiding a Variable through Inheritance?
我正在编写一个游戏引擎,我试图让它的所有功能都隐藏起来,而且基本上是无规则的,所以当程序员编写游戏时,他们不会关心某些东西需要如何或为什么这样或那样,我试着把它纯粹留给C++语言。
例如,我不希望他们:
//Going to create a new object on screen
Object* newObject = gameEngine.gameModels.NewObject(); //I don't want this
相反,我希望他们能够做到这一点:
//Going to create a new object on screen
Object* newObject = new Object();
newObject->Load("objectName"); //Done!
但为了实现这一点,我需要保留资源加载器的地址,这样我就可以调用适当的Load函数并进行实际加载,这就是我正在做的:
class BaseModel
{
friend GameEngine;
private:
static ResourceModule* moduleAddress;
};
class Model : public BaseModel
{
public:
void Load(char* assetName)
{
//use moduleAddress as needed
};
};
class GameEngine
{
public:
void Initialize()
{
myBaseModel.moduleAddress = &myResourceModule;
}
private:
ResourceModule myResourceModule;
BaseModel myBaseModel;
};
但是我在"static ResourceModule*resourceModuleAddress"行遇到了一个未解决的外部错误,我无法使"friend"关键字工作(它还表示变量是私有的,无法访问)。
关于如何完成我正在尝试做的事情,或者如何让这些代码正常工作,有什么建议吗?
未解决的外部错误来自于缺少静态成员的定义。此处的解决方案:初始化私有静态成员
相关文章:
- C++继承模板类:隐藏成员变量
- 在C 中本地声明隐藏的封闭范围(而非全局)中访问变量
- 隐藏的成员变量不应在仅允许const访问的基类中突变,以便保留分配运算符
- 局部变量如何隐藏全局变量
- 双向量隐藏变量
- 编译器不应该对派生类中隐藏的基本结构的成员变量发出警告吗?
- 隐藏子类中的变量
- Visual studio调试工具提示-隐藏变量
- 如何向调试器隐藏变量/函数名
- 为什么局部变量不隐藏数组定义中的全局变量
- 类中的函数,该函数乘以2个隐藏变量
- 类型名称路径由一个静态变量隐藏
- 隐藏 c++ 源文件中变量的可见性
- 在 c++ 中隐藏 int 变量的名称
- C++通过继承隐藏变量
- 如何在dll导出的类中隐藏成员变量
- 捕获的变量隐藏了lambda中传递的变量.如何解除隐藏
- 在g++中我可以访问哪些其他隐藏变量(使用宏预先定义的)?
- g++4.8在gdb中隐藏变量
- 是否有一种方法来隐藏变量在cout (c++)