我有一个模板化的类,在其中我需要专门针对也已模板化的类的一些方法。更具体地说:我尝试结合使用智能数组和共享指针:

template <class T>
int sortedArray< smartPtr<T> >::insert(const T& object) {
...
}

使用这种语法,我得到以下错误:
main.cpp:162:55: error: invalid use of incomplete type ‘class sortedArray<smartPtr<T> >’
int sortedArray< smartPtr<T> >::insert(const T& object) {
                                                      ^
main.cpp:87:7: error: declaration of ‘class sortedArray<smartPtr<T> >’
 class sortedArray {
       ^

甚至有可能做这种事情?

最佳答案

您可以部分专门化整个类模板:

template <typename T>
struct sortedArray<smartPtr<T>> {
    void insert(const smartPtr<T>& object) {
        ....
    }

    // everything else
};

或者,您可以显式地专门化一个方法:



如:
template <>
void sortedArray<smartPtr<int>>::insert(const smartPtr<int>& object) {
    ...
}

但是您不能仅将一种方法部分地专门化。

10-04 19:46