gpt4 book ai didi

c++ - 返回与 C++ 中的类相同的类型

转载 作者:行者123 更新时间:2023-11-30 01:17:57 25 4
gpt4 key购买 nike

我想要一个 C++ 类方法来返回对同一类对象的引用。这也适用于派生类。在下面的示例中,我简单地将“A*”作为函数的返回类型,但这在使用类 B 时显然是一个问题。

class A {
public:
A* self() { return this; };
};

class B: public A {

};

int main(int argc, char **argv) {
A* a1 = new A;
B* b1 = new B;

A* a2 = a1->self();
B* b2 = b1->self();
}

编译器提示

class.cpp: In function ‘int main(int, char**)’: class.cpp:16: error:
invalid conversion from ‘A*’ to ‘B*’

在 Objective-C 中我会使用 instanceof 特殊类型作为返回类型。对于此类问题,是否有类似于 C++ 或任何已知模式的用法?

最佳答案

我猜你需要 "return type relaxation" (注意 虚拟):

struct A {
virtual A* self() { return this; };
};

struct B: A {
B* self() { return this; };
};

您也可以考虑 this question这种语言特性是专门针对类的并行层次结构的情况引入的(clone 是一种特殊情况)

关于c++ - 返回与 C++ 中的类相同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335923/

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