(c++)这个错误是关于:左值需要作为赋值的左操作数



我正在使用c++中的有序链表制作一个哈希表来存储名称列表。

我一直得到一个编译错误在我的createhashTable函数。我试图创建一个空白表与虚拟节点从0 ->bucketsize我的代码是这样的:

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++;
}
}

我得到这个错误:

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];

我怎样才能正确地实现这个功能。^

正如Werner Henze所说,&hashArr[i]不能被修改,因为它是一个右值。在这个上下文中,这样的表达也没有意义。您正在尝试在堆上创建具有指定大小的数组。去掉前缀的地址,即hashArr[i] = new listNode[bucketSize];

最新更新