假设我有两个模板化的类,一个是纯虚拟父类,另一个是从父类继承的。 两者都模仿了泛型和仿函数。 例如:
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; }更多推荐
发布评论