簡體   English   中英

C ++-如何在不多次定義模板的情況下實現模板類的多種功能?

[英]C++ - How can I implement multiple function of a template class without defining the template multiple times?

我想知道是否可以在不多次定義模板的情況下實現模板類的多種功能。

宣言:

template <class T>
class Test{
    private:
    T field;
    public:
    Test(T value);
    T& get();
    void set(T value);
};

執行:

template <class T> Test<T>::Test(T value){ set(value); }
template <class T> T& Test<T>::get(){ return field; }
template <class T> void Test<T>::set(T value){ field = value; }

多次復制template <class T>有點容易出錯。 我想知道我是否可以做這樣的事情:

template <class T>{
Test<T>::Test(T value){ set(value); }
T& Test<T>::get(){ return field; }
void Test<T>::set(T value){ field = value; }
}

任何幫助,將不勝感激。

如果不將其與類分開,則不必每次都指定template<class T>

您可以在類定義中直接實現這些方法。

此外,您無需將模板類的聲明和實現分開。 它對編譯沒有副作用。 因為執行不是真正的執行。 模板類不是類,它只是可用於創建類的模板。 當您實例化此類模板類(例如YourTemplate)時 ,編譯器將創建該新類。 為了創建它,它必須查看所有模板化的成員函數(以便它可以使用模板來創建實際的成員函數,例如YourTemplate :: function1() ),因此,這些模板化的成員函數必須位於頭文件中。 ,以及模板類主體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM