我已經模板類BSTNode敵不過 '運算符=',在
BSTNode.h
#ifndef _NODE_BST_H_
#define _NODE_BST_H_
template <class K, class T>
struct BSTNode
{
typedef K keyType;
typedef T elementType;
keyType _key;
elementType _element;
BSTNode<keyType,elementType>* _leftChild;
BSTNode<keyType,elementType>* _rightChild;
// constructors
BSTNode();
BSTNode<K,T>::BSTNode (keyType, elementType, unsigned int, BSTNode<K,T>*, BSTNode<K,T>*);
/*
some methods
*/
BSTNode<K,T>& operator=(const BSTNode<K,T>& nodoBST2);
};
template <class K, class T>
BSTNode<K,T>::BSTNode()
{
_leftChild=NULL;
_rightChild=NULL;
}
template <class K, class T>
BSTNode<K,T>::BSTNode (keyType chiave, elementType elemento, unsigned int altezza, BSTNode* figlioSinistro=NULL, BSTNode* figlioDestro=NULL)
{
//constuctor code
}
template <class K, class T>
BSTNode<K,T>& BSTNode<K,T>::operator=(const BSTNode<K,T>& nodoBST2)
{
//operator= code
return *this;
}
#endif
的main.c
#include <cstdlib>
#include <iostream>
#include "BSTnode.h"
using namespace std;
int main(int argc, char *argv[])
{
BSTNode<string,string>* node1,node2;
node1=NULL;
node2=node1;
system("PAUSE");
return EXIT_SUCCESS;
}
我得到錯誤
no match for 'operator=' in 'node2 = node1'
candidates are: BSTNode<K, T>& BSTNode<K, T>::operator=(const BSTNode<K, T>&) [with K = std::string, T = std::string]
即使你有運營商=在BSTNode類匹配所需的簽名。
此外,根據我的經驗,作爲node1,node2指向類BSTNode的指針,我知道其實我甚至不需要operator =。
可能是什麼問題?有人可以看看並幫助我嗎?
提前感謝您的時間。
好的,謝謝你們兩個。 – geraldCelente