指针引用类型——引发了异常: 读取访问权限冲突。 this 是 0xFFFFFFFFFFFFFFDF。


问题描述

用指针引用类型调用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*类型即可。指针已经可以修改对象真实值,不必再引用。

*&currentUser的内容在第695行之前都正确,但在第695行变成了无效数据8d58b4865ef3496db2de781a5dcceeea.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值