(C+;+;)这个错误是关于什么的:赋值的左操作数需要左值 我用C++中的有序链表制作一个哈希表来存储名字列表。
我的createhashTable函数不断出现编译错误。我试图创建一个空白表,其中包含0->bucketsize中的虚拟节点 我的代码如下所示:(C+;+;)这个错误是关于什么的:赋值的左操作数需要左值 我用C++中的有序链表制作一个哈希表来存储名字列表。,c++,compiler-errors,linked-list,hashtable,C++,Compiler Errors,Linked List,Hashtable,我的createhashTable函数不断出现编译错误。我试图创建一个空白表,其中包含0->bucketsize中的虚拟节点 我的代码如下所示: class listNode{ public: string firstName, lastName; listNode* next; listNode(){ firstName = "dummyfirst"; lastName = "dummyla
class listNode{
public:
string firstName, lastName;
listNode* next;
listNode(){
firstName = "dummyfirst";
lastName = "dummylast";
next = NULL;
}
listNode(string firstName, string lastName){
this->firstName = firstName;
this->lastName = lastName;
this->next = NULL;
}
void printNode(listNode* node, ofstream* outFile){
if(node->next == 0) {
*outFile << "\n";
}
else{
*outFile << "(" << node->firstName << "," << node->lastName << "," << node->next->firstName << ") --> ";
}
}
friend class hashTable;
}; //end of listNode class
class hashtable {
public:
char op;
string firstName, lastName;
int bucketSize;
listNode *hashArr;
void createHashTable(int bucketSize){
/////////////////
int i = 0;
// hashArr = new listNode[bucketSize];
while(i < bucketSize){
&hashArr[i] = new listNode[bucketSize];
i++;
}
}
如何正确实现此功能。
^正如Werner Henze所说,
&hashArr[i]
不能修改,因为它是一个右值。在这种情况下,这样的表达也没有意义。您正在尝试在堆上创建具有指定大小的数组。删除前缀的地址,即hashArr[i]=newlistnode[bucketSize]
您希望hashArr[i]做什么?这是一个对象的地址。您不能更改对象的地址。只能更改对象的(值)。你想要实现什么?可能hashArr
必须有另一种类型?请提取并提供此类问题的答案。甚至在这之前,只要在网上搜索一下错误信息就可以开始你的研究了。作为这里的一个新用户,也可以阅读。
main.cpp: In member function ‘void hashtable::createHashTable(int)’:
main.cpp:51:42: error: lvalue required as left operand of assignment
&hashArr[i] = new listNode[bucketSize];