定制比较器和模板的特定问题

| 很抱歉,我问了这么多,但是我遇到了另一个问题,我不知道该如何解决...根据我的收集,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>();
}
    
已邀请:
您必须将ѭ1用作:
  typename T::myComparator cmp; 
//^^^^^^^
要求1ѭ,因为ѭ4required是从属名称。 请参阅stackoverflow本身的以下C ++常见问题解答: \“在何处以及为什么必须在相关名称上加上
template
typename
?”     

要回复问题请先登录注册