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 – 继承:返回自身类型的函数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)