c++ - 子类作为类方法的返回类型

标签 c++ class methods

我有一个要继承的 C++ 类。它的所有 child 都将继承一个方法:

class Record {
public:
    RETTYPE* all();
};

class Child : public Record {
    int age;
    char *name;
};

int main() {
    Child boo;
    Child boos* = boo->all(); // Pointer to array of Children
    return 0;
};

如何使方法返回(指向)自身?我不能只说 Record all(); 因为 Child 不是 Record。该方法永远不会在 Record 上调用。始终在继承自 Record 的某些类上。

最佳答案

这是一种方法

class Record {

};

template<class T>
class RecordOf : public Record {
public:
    T* all();
};

class Child : public RecordOf<Child> {
    int age;
    char *name;
};

每个子类现在都有一个返回确切类型的 all 方法。您可以将虚拟方法和具有相同签名的方法放在 Record 的子类中,并将依赖于确切类型的方法放在 RecordOf 中。

它被称为奇怪的重复模板模式

http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern

关于c++ - 子类作为类方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426318/

相关文章:

N!的C++算法订单

c++ - 为什么成员类型需要前向声明,而成员函数不需要?

java - 在子类中调用父类方法

ruby - 如何在二叉树上的 ruby​​ 中实现就地映射方法(映射!)?

c++ - 将方法作为回调从一个类传递到另一个类

Qt Creator 支持 C++11 IDE?

c++ - 如何退出 Android NDK 应用程序

python - ctypes 错误 : libdc1394 error: Failed to initialize libdc1394

c# - 实例变量在实例化后重置为默认值

javascript - 如何将 JSON 对象重新持久化为具有关联方法的对象?