2010-11-15 69 views
3

我們可以在沒有模板類的普通類中聲明template函數,還是應該總是在template class之內?C++中的模板

+0

我認爲你的意思是「班級模板」。一個類模板,比如'template struct Foo {};'是一種模板,但不是一種類。同樣,「功能模板」是另一種模板,而不是功能。 – MSalters 2010-11-15 09:56:18

+0

這已經是一個騙局 – 2010-11-15 13:23:28

回答

2

我們可以在一個普通的類聲明模板函數同出一模板類

我們可以。例如

class demo 
{ 
    public: 
    template <typename T> 
    void func(const T& x) { 
     //do stuffs 
    } 
}; 

int main() 
{ 
    demo d; 
    d.func<int>(5); 
} 

是完全有效

2

是的,你可以在非模板類模板函數的支持,例如:

struct X { 
    template<class T> 
    void f(const T& t) { 
     // ... 
    } 
}; 
0

是的,你可以,但要確保你的定義和模板函數的聲明是在頭文件。如果你想知道更多爲什麼這樣或更多關於模板一般我可以推薦你這本書Templates - Complete Guide