我想創建一個模板類(我們稱之爲Foo
),它只接受一些特定的類型參數(假設只有double
和float
)。通常,模板在頭文件(.h
)中實現,因爲未知如何在用戶代碼中實例化它。在這種情況下,它更有意義落實在實現文件(.cpp
)類,像這樣:如何在C++中爲實例化的模板類編寫頭文件?
// Foo.cpp:
template <class T>
class Foo
{
// Insert members here
};
typedef Foo<double> Foo_d;
typedef Foo<float> Foo_f;
這將實例化和編譯類時Foo.cpp中進行編譯。但是,那麼我如何在頭文件中聲明它,而不用另外編寫Foo_d
和Foo_f
的聲明?
這不能回答你的問題,但是命名一個擴展名爲「.c」的C++源文件是個不好的做法。 – 2012-06-12 00:30:06
可能是以下副本:http://stackoverflow.com/questions/874298/c-templates-that-accept-only-certain-types此問題顯示如何僅允許輸入某些類型,以便您不要不必自己聲明它們,如果用戶嘗試的東西不是你所允許的,它只會拋出一個錯誤。 – tpg2114
@Michael這是評論中的一個愚蠢的錯誤。 – Matt