我有一个非常基本的系统,用于学习 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 编译模板的头文件?它似乎试图编译模板文件本身并给我链接器输入文件未使用,因为链接未完成
错误。
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
我可以编写自己的 makefile,但我有兴趣看看 IDE 中是否有解决方案。
最佳答案
您不构建 .tpp
文件。它们仅通过 #include
指令包含在头文件中。
相反,您可以将头文件包含在正确的 .cpp
源文件中。
关于c++ - Eclipse CDT 和编译 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625493/