Чтобы определить шаблонный класс, я рассмотрю три разных файла. Объявление находится в файле .h
, внедрения методов - в файле .cpp
, а явные экземпляры включены в файл .inc
(путем добавления строки в конце .cpp, например: #include "bar-impl.inc"
).
Теперь вот моя проблема. У меня есть два класса шаблонов, скажем: Foo<S>
и Bar<T>
.
Внутри класса Bar<T>
у меня есть метод, который возвращает шаблон Type FooType*
(который с моим явным созданием экземпляра я бы хотел, например, Foo<float>*
)
template<class T>
class Bar{
....
template <class FooType>
FooType* doSomething(int);
....
};
Поскольку компилятор не знает, что такое FooType*
, я попытался явно создать экземпляр метода doSomething
в файле bar-impl.inc
.
//bar-impl.inc
template class Foo<float> * Bar<float>::doSomething(int);
Однако это не сработало, и я получаю сообщение об ошибке: no matching function for call to
‘Bar<float>::doSomething(int&)’
make: *** [main] Error 1
Кто-нибудь знает, возможно ли это сделать?