簡體   English   中英

類模板方法特化

[英]Class template method specialization

我正在嘗試專門化這樣的模板方法:

template <typename X, typename Y>
class A {
public:
    void run(){};
};


template<typename Y>
void A<int, Y>::run() {}

但我得到

main.cpp:70:17: error: nested name specifier 'A<int, Y>::' for declaration does not refer into a class, class template or class template partial specialization

我知道專業化還沒有完成,因為我還沒有用特定的Y實例化它,但是我該怎么做呢?

您首先需要部分特化類本身,包括函數聲明。 之后,您可以編寫其定義。 您可能不會部分特化某個功能。

例如

#include <iostream>

template <typename X, typename Y>
class A {
public:
    void run()
    {
        std::cout << "How do you do?\n";
    };
};


template<typename Y>
class A<int, Y>
{
public:
    void run();
};

template<typename Y>
void A<int, Y>::run()
{
    std::cout << "Hello World!\n";
}

int main() 
{
    A<int, int>().run();
    A<double, int>().run();
    
    return 0;
}

程序輸出。

Hello World!
How do you do?

暫無
暫無

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

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