Как написать явную специализацию объектаЯвная специализация, C++
Car<T>
в виртуальном методе ясного()?
template <class U>
class List
{
public:
virtual void clear();
};
template <class T>
template <>
void List < Car <T> >::clear() //Specialization U = Car <T>, compiler error
{
....
}
класс автомобиля:
template <class T>
class Car
{
T speed;
...
}
Ошибка компиляции:
Ошибка 16 Ошибка C3855: 'Список': шаблон параметр 'Автомобиль' несовместима с Декларацией ч: ... \ List .hpp 75 Ошибка 20 ошибка C2264: «Список :: очистить»: ошибка в определении функции или декларации; функция не вызывается час: ... \ List.hpp 75
Но эта конструкция ОК
template <>
void List < Car <double> >::clear() //Specialization U = Car <T>, compiler error
{
....
}
Работает ли она без строки 'template <>'? – fredoverflow
Мне кажется, вам действительно нужно определить явную спецификацию List>, потому что это то, о чем жалуется мой компилятор: «Недопустимое использование неполного типа» struct List > « –
BatchyX
btw Как выглядит автомобиль? –