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