Как переслать объявление шаблона класса C ++?

Данный шаблон класса похож на следующее:

template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};

Как кто-то может объявить этот класс в заголовочном файле?

61

Решение

Вот как бы вы это сделали:

template<typename Type, typename IDType=typename Type::IDType>
class Mappings;

template<typename Type, typename IDType>
class Mappings
{
public:
...
Type valueFor(const IDType& id) { // return value }
...
};

Обратите внимание, что по умолчанию используется в предварительной декларации, а не в фактическом определении.

77

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

Вы можете объявить аргументы по умолчанию для шаблона только для первого объявления шаблона. Если вы хотите разрешить пользователям переадресовывать объявление класса, вы должны предоставить заголовок пересылки. Если вы хотите переслать объявление шаблона класса другого человека, используя значения по умолчанию, вам не повезло!

7

По вопросам рекламы [email protected]