模板化成员函数能否实现两个基类的虚函数?
can a templated member function implement two base classes's virtual functions?
ive在这里有一个奇怪的方案...我得到了一个班级,可以在我的最终派生类中使用单个模板实现来实现模板基类的多重继承,这是我想实现的
模板基础:
//simple class with a pure virtual function DoFoo()
template <typename T>
struct foo
{
virtual T DoFoo() = 0;
};
base2:
//a simple class that inherits from foo, but does not implemented DoFoo()
struct bar {};
struct base2 : public foo<bar>
{
};
最终派生类:
//a class that inherits from base2, and foo<bar2>,
//that needs an implementation of DoFoo for both bar and bar2 types.
struct bar2{};
struct final : public base2, public foo<bar2>
{
template <T>
T DoFoo(){ return T();}
};
我希望看到编译器将生成结构最终必须实现的两个虚拟函数,即BAR和BAR2的DOFOO版本。如果编译器能够看到模板的功能,则应是能够生成与两个虚拟功能原型匹配的模板函数。
然而,似乎编译器认为dofoo()函数(对于bar和bar2)丢失了,用"以下虚拟函数在"错误"中纯化"错误。
我缺少关于语法的东西吗?或者,这是我对继承&amp;模板?为什么?
然而,似乎编译器认为dofoo()功能,bar和bar2缺少
是正确的。foo::DoFoo
名称foo
成员函数。final::DoFoo
命名成员模板,而不是成员函数。final::DoFoo<int>
确实命名了一个成员函数,其定义是通过实例化模板而生成的,但是成员函数的名称为 final::DoFoo<int>
-当时的角度括号不超过其拼写方式的一部分。
相关文章:
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 两个父类的构造函数的序列
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- C++如果两个模板函数都与参数列表匹配,将调用哪个模板
- 如何从两个不同的函数传递参数
- 两个函数模板候选项.将一个参数作为引用后,选择不太专业的模板
- 如何比较两个函数的速度和性能
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 有一个构造函数,但有两个析构函数
- 为什么系统日志有两个不同的函数声明?
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- C++ 关于两个类构造函数的问题
- 如何创建两个具有相同名称和不同返回类型并基于布尔参数运行的函数
- 如何在构造器的成员初始值设定项列表中调用两个函数?
- 如何将这两个函数组合成一个实现?
- 将函数两个向量合并为第三个向量
- C++朋友函数两个数字的加法