0

Всем добрый день. В классе Matrix, что определён в файле Matrix.h у меня есть шаблон функции:

Matrix.h:

template<class T> void func(T *arr);

В файле Matrix.cpp есть определение этой функции:

Matrix.cpp:

template<class T> 
void Matrix::func(T *arr)
{
    for (int i = 0; i < 4; i++)
        std::cout << arr[i] << std::endl;
    std::cout << std::endl;
}

В другом же файле - InverseMatrix - я хочу передать в эту функцию указатель на массив типа string:

InverseMatrix.cpp:

string arrx[] = { "x1", "x2", "x3", "x4" };
func(arrx);

Это, в свою очередь, приводит к ошибке:

InverseMatrix.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Matrix::func<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (??$func@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Matrix@@QAEXPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции "public: void __thiscall InverseMatrix::print(void)" (?print@InverseMatrix@@QAEXXZ)

В чём может быть проблема? Примечательно, что есть всё это будет в одном файле, то никаких проблем не появится. P.S.: Понятное дело, что это всего лишь максимально упрощённый пример моей реальной функции, утомлять тонкостями реализации которой я не нахожу нужным.

wchistow
  • 3,697
  • 6
  • 13
  • 32
npht
  • 1

0 Answers0