如何解决(C++) 这个错误是关于什么的:左值需要作为赋值的左操作数
我正在使用 C++ 中的有序链表创建一个哈希表来存储名称列表。
我的 createhashTable 函数不断出现编译错误。我正在尝试创建一个空白表,其中包含 0 -> 桶大小的虚拟节点 我的代码如下所示:
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];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。