多态基类指针(Polymorphism base class pointers)

编程入门 行业动态 更新时间:2024-10-24 18:28:13
多态基类指针(Polymorphism base class pointers)

假设我有两个模板化的类,一个是纯虚拟父类,另一个是从父类继承的。 两者都模仿了泛型和仿函数。 例如:

template<typename T, typename funct> class pure_virtual{ //pure virtual members } template<typename T, typename funct> class child : public pure_virtual{ //members }

在我的主要部分中,我想在不使用动态内存的情况下创建一个指向子类的pure_virtual指针。 例如:

int main(){ pure_virtual<int*,my_functor>* p; child<int*,my_functor> c(my_functor); p = &c; return 0; }

这个实现给了我一个编译错误,声明它不能将类型子转换为类型pure_virtual。 知道我在这里做错了吗? 我知道如果我使用动态分配,这将起作用; 但是,如果可能的话,我真的想避免它。

谢谢

Say I have two templated classes, one pure virtual parent and another that inherits from the parent. Both are templated to take a generic type and a functor. For example:

template<typename T, typename funct> class pure_virtual{ //pure virtual members } template<typename T, typename funct> class child : public pure_virtual{ //members }

In my main, I want to create a pure_virtual pointer to my child class without the use of dynamic memory. For example:

int main(){ pure_virtual<int*,my_functor>* p; child<int*,my_functor> c(my_functor); p = &c; return 0; }

This implementation gives me a compile error stating that it cannot convert type child into type pure_virtual. Any idea as to what I'm doing wrong here? I know if I use dynamic allocation, this will work; however, I would really like to avoid it if possible.

Thanks

最满意答案

这是一个可编辑的例子:

template<typename T, typename funct> class pure_virtual{ //pure virtual members }; template<typename T, typename funct> class child : public pure_virtual<T,funct> { public: //members child(funct) { } }; struct my_functor {}; int main(){ pure_virtual<int*,my_functor>* p; my_functor f; child<int*,my_functor> c(f); p = &c; return 0; }

Here is a compilable example:

template<typename T, typename funct> class pure_virtual{ //pure virtual members }; template<typename T, typename funct> class child : public pure_virtual<T,funct> { public: //members child(funct) { } }; struct my_functor {}; int main(){ pure_virtual<int*,my_functor>* p; my_functor f; child<int*,my_functor> c(f); p = &c; return 0; }

更多推荐

本文发布于:2023-08-07 22:45:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1466409.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指针   多态   Polymorphism   pointers   class

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!