问题描述
用指针引用类型调用setNickname函数时报错:读取访问权限冲突。
//it是list<GroupBase*>类型,代码删去了与问题不相关的部分
(*it)->readGroupInfo();
(*it)->readMembers();
GroupMemberBase*& currentUser = (*it)->findMember(ID);
role = currentUser->getRole();
(*it)->printInfo();
cout << "本群昵称:" << currentUser->getNickname() << endl;
std::cout << "\n---操作选项---" << std::endl;
std::cout << "2. 修改本群昵称" << std::endl;
std::cin >> choice;
if (choice == 2) {
std::string newNickname;
std::cin >> newNickname;
currentUser->setNickname(newNickname);
(*it)->writeMembers();
}
原因分析:
实际上currentUser设置成GroupMemberBase*类型即可。指针已经可以修改对象真实值,不必再引用。
*¤tUser的内容在第695行之前都正确,但在第695行变成了无效数据