gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:10:17 33 4
gpt4 key购买 nike

我有一个要继承的 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/

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