ヘッダーファイルで名前空間の下に定義されたテンプレート関数があります。このヘッダーを同じプロジェクトの2つのソースファイルに含めるとします。私は再定義のエラーを取得しません。ヘッダーファイルの再定義エラー - cpp
/* template.h */
namespace x
{
template<typename T>
function(t)
{
/* implementation */
}
}
/*test.cpp*/
#include "template.h"
/* test2.cpp */
#inlcude "template.h"
上記の場合、再定義エラーは発生しません。 。私は何のエラーも受けていないのですか?
これは、ヘッダーファイルに*関数*を定義していないため、関数*テンプレート*を定義するためです。私はあなたに読むことをお勧めします。 [なぜテンプレートはヘッダファイルにのみ実装できますか?](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) 。 –
私は理解していません - なぜあなたはエラーを取得していないのですか?または何?ヘッダファイルは各cppファイルに一度含まれているので、再定義はありません - 各cppはこのヘッダを1回だけ見るので、okです... –
複数のソースファイルにtemplate.hを含めるとどうなりますか@Someprogrammerdude –