gpt4 book ai didi

c++ - 在 C++ 中的编译时获取子类型

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

我有一个引用计数的基类,它将成为我的大多数 对象的父类。它有自己的小引用计数方法。问题是,这些可能会被子类化。在某种程度上,我正在尝试实现 NSObject,但是是在 C++ 中。

因此这意味着有一个“init”方法。

因此,init 方法应该总是返回 child 的类类型。想象一下:

class BaseClass{
public:
virtual childclass* init();
}

我知道在 Objective-C 中这会很容易,因为它返回“id”并且不需要转换。但是在 C++ 中没有“id”这样的东西,因此我希望有一个宏或自动将 childclass* 扩展到实际子类的东西。我是 C++ 的新手,所以我不确定如何实现它。

最佳答案

这可以通过 Curiously Recurring Template Pattern 完成.

template <class childclass> class BaseClass
{
public:
virtual childclass* init();
};

class ChildClass : BaseClass<ChildClass>
{
public:
virtual ChildClass* init();
};

关于c++ - 在 C++ 中的编译时获取子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907213/

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