Я пытаюсь явно создать экземпляр шаблона функции. Пожалуйста, посмотрите фрагмент кода
основной.cpp:
void func(int * );
int main()
{
int m = 3, n = 5;
int *ptr;
ptr = &m;
func(ptr); //function call
<do-Something>
.....
.....
}
Функция func() находится в этом файле cpp.
func.cpp :
#include "class_def.h"
template <int x1, int x2, int x3>
void sum(int *, myclass<x1, x2, x3> &); //template declaration
void func(int *in)
{
myclass<1,2,3> var;
sum(in,var); //call to function template
<do-Something>
.....
.....
}
class_def.h :
template<int y1, int y2, int y3>
class myclass
{
public:
int k1, k2, k3;
myclass()
{
k1 = y1;
k2 = y2;
k3 = y3;
}
};
Определение шаблона функции "сумма" находится в другом файле hpp.
определить.hpp :
#include "class_def.h"
template <int x1, int x2, int x3>
void sum(int *m, myclass<x1, x2, x3> & n) //function template definition
{
<do-Something>
.....
.....
}
Теперь для создания экземпляра этого шаблона я написал следующий оператор кода под определением.
template void sum<int, int, int>(int *, myclass<1, 2, 3> &);
Но все же я получаю ошибку связи, поскольку
неопределенная ссылка на недействительную сумму‹1, 2, 3>(int*, myclass‹1, 2, 3>&)
Что я здесь делаю неправильно?
define.hpp
в какой-либо модуль компиляции? - person eerorika   schedule 08.06.2015