簡體   English   中英

c++ 模板成員 function 與 class 外部部分特殊化

[英]c++ template member function with partial spezialisation outside class

此代碼使用對 std::vector 和其他類型不同的模板成員。 到目前為止,它工作正常。 但是,在 class 之外為 std::vector 定義 get 方法的正確語法是什么? 我知道使用特征和其他幫助器來使這個工作,但如果有一個有效的語法,我想要這個簡單的解決方案。

 #include <iostream> #include <vector> using namespace std; struct s { template < class X > void get (X x) { cout << "inner\n"; }; template <class X> void get(std::vector<X> vec) { cout << "inline any vector\n"; } }; int main () { std::vector < int >vec; std::vector< double> dvec; sx; x.get (1); x.get (vec); x.get(dvec); return 0; }

這似乎不起作用

template <class X> void s::get(std::vector<X> v) { }

在 class 之外為 std::vector 定義 get 方法的正確語法是什么?

那就是在 class 模板中聲明它,然后在 go 前面聲明它並在外面定義它:

struct s {
    template < class X > 
    void get (X x) { 
        cout << "inner\n";
    }

    template <class X>            // declaration
    void get(std::vector<X> v);
};

template <class X>                // definition
void s::get(std::vector<X> v) {}

暫無
暫無

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

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