gpt4 book ai didi

c++ - 扩展现有类,如命名空间 (C++)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:39 25 4
gpt4 key购买 nike

我用第二人称写作是因为这对你来说很容易。

您正在使用游戏引擎,并且真的希望特定的引擎类有一个执行“bla”的新方法。但是您不想将“游戏”代码扩展到“引擎”代码中。

所以您可以使用您的一种新方法从它派生一个新类,并将该代码放在您的“游戏”源目录中,但也许还有另一种选择?

所以这在 C++ 语言中可能是完全非法的,但您首先想到的是,“也许我可以通过我自己的头文件向现有类添加一个新方法,其中包括‘父’头文件和一些特殊语法。这是在使用 namespace 时可能,例如……”

假设你不能在多个头文件中声明一个类的方法(而且你非常确定你不能),还有哪些其他选项支持“中间件/引擎/库”和“应用程序”之间的明确划分',你想知道吗?

最佳答案

我唯一的问题是,“你添加的功能需要是成员函数,还是可以是自由函数?”如果你想做的事情可以使用类的现有接口(interface)来解决,那么唯一的区别就是语法,你应该使用一个自由函数(如果你认为那是“丑陋的”,那么......接受它并继续前进, C++ 不是为 monkeypatching 设计的)。

如果您试图了解该类的内部结构,这可能表明原始类缺乏灵 active (它没有公开足够的信息来让您从公共(public)接口(interface)执行您想要的操作).如果是这样的话,也许原始类可以“完成”,然后您又可以在其上放置一个免费功能。

如果这些都行不通,你只需要有一个成员函数(例如,原始类提供了你想要访问的 protected 成员,而你没有修改原始接口(interface)的自由)......只有然后求助于继承和成员函数实现。

要深入讨论(和解构 std::string'),请查看此 Guru of the Week "Monolith" class article .

关于c++ - 扩展现有类,如命名空间 (C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/228404/

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