c – 继承:返回自身类型的函数?

c – 继承:返回自身类型的函数?,第1张

概述假设我有两个课程: class A{ public: A* Hello() { return this; }}class B:public class A{ public: B* World() { return this; }} 让我们说B类的例子就是这样的: B test; 如果我调用t 假设我有两个课程:
class A{    public:    A* Hello()    {        return this;    }}class B:public class A{    public:    B* World()    {        return this;    }}

让我们说B类的例子就是这样的:

B test;

如果我调用test.World() – > Hello()可以正常工作.
但是test.Hello() – > World()不会工作,因为Hello()返回一个类型.

我如何使Hello()返回B的类型?我不想使用虚拟函数,因为我们有超过20个不同的类继承A.

解决方法 你可以使用 CRTP,好奇的循环模板模式:
template<class Derived>class A{    public:    Derived* Hello()    {        return static_cast<Derived*>(this);    }};class B : public A<B>{    public:    B* World()    {        return this;    }};int main() {    B test;    test.World()->Hello();    test.Hello()->World();}
总结

以上是内存溢出为你收集整理的c – 继承:返回自身类型的函数?全部内容,希望文章能够帮你解决c – 继承:返回自身类型的函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存