Eclipse CDT и компиляция шаблонов C ++

У меня есть очень простая система, которую я использую для изучения шаблонов C ++. Насколько я понимаю, нужно включить определение шаблона в файл объявления шаблона и скомпилировать его вместо реализации, например так:

/*LINKEDLIST.H*********************************/

#ifndef LINKEDLIST_H_
#define LINKEDLIST_H_

#include "node.h"
template <typename T>
class linkedlist {
/*..*/
};

#include "linkedlist.tpp"
/*LINKEDLIST.TPP*********************************/

#include "node.h"
template<typename T>
linkedlist<T>::linkedlist() {
/*..*/
}

Как я могу получить Eclipse CDT для компиляции заголовочных файлов для шаблонов? Кажется, что он пытается скомпилировать файлы шаблона сами и дает мне linker input file unused because linking not done ошибки.

Building file: ../linkedlist.tpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"linkedlist.d" -MT"linkedlist.d" -o "linkedlist.o" "../linkedlist.tpp"g++.exe: warning: ../linkedlist.tpp: linker input file unused

Я могу написать свой собственный make-файл, но мне интересно посмотреть, есть ли решение этой проблемы в IDE.

2

Решение

Вы не строите .tpp файлы. Они включены только в заголовочные файлы с #include директивы.

Вместо этого вы включаете заголовочный файл в правильное .cpp исходный файл.

2

Другие решения

Ваши файлы .tpp связаны как C ++ Источник Файлы вместо C ++ шаблон Файлы. Чтобы исправить это:

Войдите в окно настроек Eclipse.

C / C ++ -> Типы файлов

В столбце Имя файла найдите расширение с tpp в нем (скорее всего, * .tpp) и удалите его.

Нажмите Новый …

Pattern: * .tpp
Тип: C ++ заголовок файл

1

По вопросам рекламы [email protected]