Компилятор MinGW, codeblocks
Приведу пример:
Файл Eample.h
#pragma once
template<typename T> class Example
{
public:
int Get();
};
Файл Example.cpp
#include"Example.h"
template<typename T> int Example<T>::Get() { return 4; }
файл main.cpp
#include<iostream>
int main()
{
Example<int> example;
std::cout<<example.Get();
}
Выдает:
undefined reference to 'Examle::Get()'
Причем, когда я не подключаю "Example.h" и оставляю main пустым, все компилируется нормально.
Или когда оставляю Get в Example.h все тоже работает нормально:
Файл Eample.h
#pragma once
template<typename T> class Example
{
public:
int Get();
};
template<typename T> int Example<T>::Get() { return 4; }
Думаю, проблема не в линковщике, потому что когда я выношу из хедера в .cpp методы обычных, не шаблонных классов, все работает нормально.