Доброго времени суток!
Пытаюсь использовать шаблонный класс:
TemplateClass.h#pragma once
#include <iostream>
#include <boost/asio/ip/tcp.hpp>
template <class T>
class TemplateClass {
public:
TemplateClass();
~TemplateClass();
};
TemplateClass.cpp#include "pch.h"
#include "TemplateClass.h"
template <class T>
TemplateClass<T>::TemplateClass() { }
template <class T>
TemplateClass<T>::~TemplateClass() { }
main.cpp#include "pch.h"
#include <iostream>
#include "TemplateClass.h"
int main() {
TemplateClass<boost::asio::ip::tcp::socket>* test = new TemplateClass<boost::asio::ip::tcp::socket>();
}
Выдает ошибку при компиляции:
Текстовый вариант- Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E2512 Аргумент для тестирования функции макро должен быть простым идентификатором. TemplateClassErrorTest D:\cpp\libraries\boost_1_68_0\boost\system\error_code.hpp 401
- Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка LNK2001 неразрешенный внешний символ ""public: __cdecl TemplateClass >::TemplateClass >(void)" (??0?$TemplateClass@V?$basic_stream_socket@Vtcp@ip@asio@boost@@@asio@boost@@@@QEAA@XZ)" TemplateClassErrorTest D:\cpp\Tests\TemplateClassErrorTest\TemplateClassErrorTest\TemplateClassErrorTest.obj 1
- Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка LNK1120 неразрешенных внешних элементов: 1 TemplateClassErrorTest D:\cpp\Tests\TemplateClassErrorTest\x64\Release\TemplateClassErrorTest.exe 1
Если перенести содержимое файла TemplateClass.cpp в файл TemplateClass.h, то все компилируется, все работает.
Подскажите, что не так?