我知道模板定義應該全部進入頭文件[1]。但是做什麼,如果我有兩個模板和非模板類:哪裏可以同時使用模板和非模板成員定義類?
// cls.h
class cls {
public:
template <typename U> void bar(U x); // template
void baz(); // non-template
template <typename V> class nest {
};
};
// foo1.cpp
#include "cls.h" ...
// foo2.cpp
#include "cls.h" ...
理想我想在同一個文件來定義bar
和baz
,因爲它們是緊密相關的。
- 但是,如果我在標題中查找所有實現,我將最終定義多個定義
baz
。 - 如果我扔掉了所有實現成
.cpp
,然後bar
和nest
定義不能被foo1.cpp
或foo2.cpp
看到。
我必須拆分單獨文件之間bar
和baz
?
[1] 聲明模板爲inline
似乎不適用於使用NVCC編譯CUDA代碼的MSVC++。
將模板聲明爲內聯的意思是什麼?按照當前的答案,將非模板化的baz定義爲內聯,它應該起作用。 – 2013-05-11 10:37:09