gpt4 book ai didi

C++通过继承隐藏变量?

转载 作者:行者123 更新时间:2023-11-30 01:57:56 27 4
gpt4 key购买 nike

我正在为一个游戏引擎编写代码,我正试图使其所有功能都隐藏起来并且基本上没有规则,所以当程序员编写游戏代码时,他们不会为某些事情如何或为什么需要那样而烦恼,或者另一个,我试图坚持将其保留为纯粹的 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!

但是为了让它工作,我需要保留我的资源加载器的地址,这样我就可以调用正确的加载函数并进行实际加载,这就是我正在做的:

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”行收到一个 Unresolved external 错误,而且我无法使用“friend”关键字(它还表示该变量是私有(private)的且无法访问)。

关于我如何完成我想做的事情,或者我如何让上面的代码正常工作,有什么建议吗?

最佳答案

Unresolved external 错误来自缺少静态成员的定义。此处的解决方案:Initializing private static members

关于C++通过继承隐藏变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18048267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com