gpt4 book ai didi

c++ - 与 'operator=' 不匹配

转载 作者:行者123 更新时间:2023-11-28 00:43:22 25 4
gpt4 key购买 nike

我有模板类 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

ma​​in.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 类中有 operator= 匹配所需的签名。

此外,作为 node1,node2 指向 BSTNode 类的指针,根据我的经验,我知道实际上我什至不需要 operator=。

可能是什么问题?有人可以看看并帮助我吗?

提前感谢您的宝贵时间。

最佳答案

BSTNode<string,string>* node1,node2;

...被解析为

BSTNode<string,string>* node1;
BSTNode<string,string> node2;

...因为 * 绑定(bind)到 node1 而不是类型名称。

你想写的是

BSTNode<string,string>* node1, *node2;

BSTNode<string,string>* node1;
BSTNode<string,string>* node2;

后者显然更胜一筹,因为它可以防止你以后再犯这样的错误:)。

指针独立于 = 运算符,您不需要定义,除非您想要分配原始对象。

关于c++ - 与 'operator=' 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com