10

Tôi có một lớp mẫu mà tôi có một số chuyên môn cho.
Nhưng chuyên môn tiếp theo là bản thân mẫu. Làm cách nào để bạn xác định điều này:Chuyên môn bản thân nó là một mẫu

template<typename T> 
class Action 
{ 
    public: void doStuff() { std::cout << "Generic\n"; } 
} 

// A specialization for a person 
template<> 
class Action<Person> 
{ 
    public: void doStuff() { std::cout << "A Person\n";} 
} 


// I can easily specialize for vectors of a particular type. 
// But how do I change the following so that it works with all types of vector. 
// Not just `int` 
template<> 
class Action<std::vector<int> > 
{ 
    public: void doStuff() { std::cout << "A Generic Vector\n";} 
} 
+2

Tôi chỉ tự hỏi rằng bạn không biết điều này! – Nawaz

+0

@Nawaz: suy nghĩ của tôi nữa, một đêm khuya có lẽ? –

+0

Bây giờ tôi thấy câu trả lời là hiển nhiên, nhưng tôi vẫn tiếp tục thêm một dòng mẫu khác trong đó. –

Trả lời

19

Chuyên môn hóa một phần không đáng kể?

template <typename T> 
class Action<std::vector<T>> { 
public: 
    void doStuff() { std::cout << "A Generic Vector\n"; } 
}; 
+2

+1. Đôi khi (thường?) Câu trả lời rõ ràng là câu trả lời đúng :) – ereOn

+0

@ereOn: câu hỏi thực sự là -> tại sao tôi nhận được rất nhiều phiếu bầu cho một câu trả lời tầm thường như vậy: x? –

+2

Tôi đoán mọi người chỉ yêu đơn giản :) – ereOn

Các vấn đề liên quan