c++ - Eclipse CDT 和编译 C++ 模板

标签 c++ templates build eclipse-cdt

我有一个非常基本的系统,用于学习 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/

相关文章:

c++ - std::sort() 中使用了哪种类型的排序?

c++ - 如何使用 2 个主要 src 文件构建 cmake 项目

php - 如何在基于 PHP 的项目中访问 ant 构建属性?

c++ - C++ 中的赋值运算符返回右值还是左值?

c++ - 从可变参数模板容器类中给定可变参数调用传入和传出方法

jquery - jQuery 的首选模板库是什么?

c++ - 为什么我不能使用 std::get

maven-2 - 在 Maven 中覆盖 'clean' 生命周期

c++ - 启用 mingw32-make -j 时核心利用率为 50%

c++ - 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?