我有一個包含多個公共和私有成員函數的Binary-Tree類模板。當成員函數都在類模板中定義和實現時,它會按預期方式正確編譯和運行。但是,當我將這些函數移到主類模板之外時,我會得到一個多重性錯誤。類模板的外部成員函數
根據此引用,類模板函數不能作爲外部的,因爲模板是在運行時編譯的。 http://www.codeguru.com/forum/archive/index.php/t-333284.html
但是,這個MSDN文章建議「成員模板也可以在類之外定義」。 http://msdn.microsoft.com/en-us/library/swta9c6e(v=vs.80).aspx
有什麼我在這裏失蹤?
template <class type>
class BinaryTree{
private:
Node<type>* root;
void internalTraverse(Node<type>* n){}
......
public:
......
};
template <class type>
void BinaryTree<type>::internalTraverse(Node<type>* n){
if (n == NULL){
return;
}
internalTraverse(n->left); // <- This declaration has no storage type or identifier
cout << "Node: " << n->data << endl;// Ditto
internalTraverse(n->right); // Ditto
};
......
完整披露:這是家庭作業的一部分。然而,它與作業的目的沒有直接關係 - 更多的是切向問題
我想改變'無效internalTraverse(節點 * N){}''到無效internalTraverse(節點 * N);'可以解決這個問題。多數民衆贊成在我看到的代碼時得到的.. –
Ajai
@Ajai這樣做了。 +1先生 –