自定义比较器和模板的特定问题
specific problem with custom comparators and templates
很
抱歉问了这么多,但我遇到了另一个我不知道如何解决的问题......据我所知,gcc 无法解析 myComparator 类类型,可能是因为以下代码不符合标准。问题是我是否遗漏了某些东西,或者是否有解决此问题的方法,这不需要太多更改(例如接口解决方案)......
template <typename DATA> class myArray
{
template <typename F> void sort (F &comp)
{
// No problems here
}
template <typename T> void sort(void)
{
T::myComparator cmp; //Error: expected `;' before 'zzz'
// T::template myComparator cmp; also doesn't work
sort(cmp);
}
};
class test
{
public:
class myComparator
{
public:
bool operator() ( const test *t1, const test * t2)
{
// No problems here
}
};
};
void testCmp()
{
myComparator cmp;
cmp.sort<test>();
}
您必须将typename
用作:
typename T::myComparator cmp;
//^^^^^^^
typename
是必需的,因为myComparator
是依赖名称。
请参阅堆栈溢出本身的C++常见问题解答:
"我必须在哪里以及为什么必须将template
和typename
放在依赖名称上?"
相关文章:
- std::设置自定义比较器
- C++中"std::sort"比较器的不同类型
- 将 std::set 与基于键的比较器一起使用
- 带自定义比较器的最小优先级队列
- 函数类作为比较器
- 优先级队列自定义比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- set_intersection使用自定义设置比较器
- 如何为集合 c++ 建立比较器
- C++复杂情况的比较器通过参数问题
- 对于BTreeMap和其他依赖于Ord的东西,是否有等效于C++比较器对象?
- 对没有比较器或λ函数的向量进行排序?
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 用户定义的结构是否有默认C++比较器?
- C++设置了一个用于排序的比较器和另一个用于唯一性的比较器
- 使用迭代器的自定义比较器函数
- C++对λ比较器EXC_BAD_ACCESS进行排序
- 使用自定义比较器声明C++优先级队列的问题
- 自定义比较器和模板的特定问题