Возможный дубликат:
Почему шаблоны могут быть реализованы только в файле заголовка?
Недавно я пытался использовать С++. На данный момент я пытаюсь запрограммировать что-то, что я уверен, что когда-либо сделал это хотя бы один раз: простой класс LinkedList. Код выполнен, но я как-то не могу его скомпилировать. Я был googling, и кажется, что я неправильно привязываю объектные файлы. Вот как выглядит мой код:
test.cpp
#include "linkedlist.h"
int main()
{
LinkedList<int> list;
// do something
}
linkedlist.h
template <typename T>
class LinkedList
{
// a lot of function and variable definitions
}
Затем есть .cpp файл с именем linkedlist.cpp, который содержит весь фактический код класса LinkerList. При попытке скомпилировать test.cpp с помощью следующей команды:
g++ ..\src\test.cpp
Мне говорят, что есть ссылка undefined на ссылку LinkedList:: LinkedList(). Поэтому я думал, что это связано с неправильным, поскольку там более одного .cpp файла, поэтому я попробовал это следующим образом:
g++ -c -Wall -O2 ..\src\test.cpp
g++ -c -Wall -O2 ..\src\linkedlist.cpp
g++ -s test.o linkedlist.o
Однако это ничего не меняет. Сообщения об ошибках остаются неизменными. Я пытался найти некоторую информацию в Интернете, однако это не получилось.