c ++: C2783 ошибка мгновенного шаблона класса

Заранее извините за мой плохой английский. Я занимаюсь разработкой собственного STL, и у меня возникли некоторые проблемы с использованием шаблона.
Это основная структура класса my List:

List.h

template <class T, class N>
class List{

public:
//public methods

private:
//private methods
}

Хорошо, теперь мне нужно реализовать функцию-член «sort», которая будет сортировать элементы списка, но в этой функции сортировки мне нужно istantiate объект List.
Я нашел решение, реализующее эту функцию в другом модуле следующим образом:

AuxiliaryFunction.h

#include<List.h>
template <class List>
void sort(Lista & l){
List A; //Works fine!
..
}

Но таким образом я должен вызвать функцию сортировки, выполнив это:

sort(ListObject);

вместо

ListObject.sort();

Как я могу сделать то же самое, но с функцией-членом класса List?
Что было бы иначе, если бы класс List был абстрактным классом, подобным следующему коду?

 template <class T, class N>
class List{

public:
typedef T ElemType;
typedef P position;

virtual void create() = 0;
virtual bool empty() = 0;
..
void merge(Lista< T, N > &, Lista< T, N > &);
...
private:
//private methods
}

Может ли параметр шаблона шаблона быть решением? Я пытался сделать что-то вроде этого

 template <class T, class N>
class List{
...
template <template <class T,class N> class List> sort(){
List A;
..
}
}

но ошибка C2783 («не удалось вывести аргумент шаблона для List») появляется, когда я пишу

ListObject.sort ();

Любая помощь будет оценена 🙂

0

Решение

Похоже, вы ищете что-то вроде этого:

template <class T, class N>
class List{
...
void sort(){
List<T, N> A;
..
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector