我有一个引用计数基类,它将是我大多数对象的父类。它有自己很少的引用计数方法。麻烦的是,这些可能会被子类化。以一种方式,我尝试实现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/