я назвал шаблон в моем C++ программа:Должен ли я отделить файлы cpp и h на C++?
const matrix::CMatrix<double> M1(3,3,{{5.0,0.0,2.0},{1.0,1.0,3.0},{6.0,7.0,7.0}});
я получил такую ошибку компоновщика:
tests.h:15: undefined reference to `matrix::CMatrix<double>::CMatrix(int, int, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >)'
после массивного поиска, в конце концов я понял, что это происходит потому, что я отделил мой час и CPP файлы и template
не терпит этого. В C предлагается отделить файлы c и h и использовать Makefile. Но в соответствии с такими проблемами в C++ все же предлагается отделить файлы cpp и h? Это не чистый способ реализовать некоторые шаблоны в h-файлах и некоторые другие функции в файле cpp. что мне делать?
редактировать:
matrix.h
template<typename T>
class CMatrix
{
.....
matrix.cpp
implementation of CMatrix
main.cpp
defining M1
Что значит «разделенный»? Где объявлен ваш шаблон (в .cpp или в .h) и где он используется? – Ashalynd