0

NetWork.hpp

template <typename T>
class NetWork{
public:
        NetWork(){};
        //NetWork(int inp, int out);
        NetWork(std::vector<int> layer_size);
private:
    std::vector<int> layer_size;
};

NetWork.cpp

#include "../header/NetWork.hpp"
template <typename T>
NetWork<T>::NetWork(std::vector<int> layer_size){
    for (int i = 0; i < layer_size-1; i++)
    {
        this->layers.push_back(Layer<T>(layer_size[i],layer_size[i+1]));
    }
    this->layer_size=layer_size; 
}

main.cpp

#include "NetWork/header/NetWork.hpp"

int main(){ std::vector<int> layer_size; layer_size.push_back(4); layer_size.push_back(8); layer_size.push_back(3);

NetWork&lt;float&gt; NN(layer_size);

return 0; 

}

После сборки проекта выдает ошибку:

main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl NetWork::NetWork(class std::vector<int,class std::allocator >)" (??0?$NetWork@M@@QEAA@V?$vector@HV?$allocator@H@std@@@std@@@Z) в функции main. [C:\Users\TopPC\Desktop\Neuron3\MyBuild\Neuron.vcxproj] C:\Users\TopPC\Desktop\Neuron3\MyBuild\Release\Neuron.exe : fatal error LNK1120: неразрешенных внешних элементов: 1 [C: \Users\TopPC\Desktop\Neuron3\MyBuild\Neuron.vcxproj]

Harry
  • 221,325

1 Answers1

1

Добавить в конец файла, реализующий шаблонный класс

template class ИмяКласса<(тип1 который мб иcпользован)>
template class ИмяКласса<(тип2 который мб иcпользован)>
и т.д.