【发布时间】:2016-04-12 19:30:00
【问题描述】:
我的学习问题遇到了小问题。
template<typename T>
class AlgorytmSortujacy
{
public:
template <typename F>
virtual std::vector<T> sortuj(std::vector<T> w, F porownywacz) const = 0;
};
此代码必须是排序算法的接口。当我例如实现冒泡排序,我必须从这个类派生并实现sortuj函数。
问题是VS2013不接受那些形式的代码,我的意思是模板虚函数(C2898错误)。你知道有什么解决办法吗?
如您所见,sort 函数从 std::vector 和 F porownywacz 获取容器 - 它是比较数组的两个元素的函数对象
最后 - 我认为我无法更改此代码,我从老师那里得到了它,我认为我必须让它工作。
【问题讨论】:
-
你不能有虚拟模板方法,虚拟是运行时工具,而模板是编译时
-
你的老师给你的代码有虚函数模板?如果我是你,我会联系他们并要求澄清。
标签: c++ templates virtual stdvector