2

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 

独自のメイクファイルを作成できますが、IDE でこれに対する解決策があるかどうかを確認したいと考えています。

4

2 に答える 2

2

.tppファイルをビルドしません。#includeこれらは、ディレクティブを使用してヘッダー ファイルにのみ含まれます。

代わりに、ヘッダー ファイルを適切な.cppソース ファイルに含めます。

于 2012-09-27T16:10:32.553 に答える