**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我是C++的新手,我试图从另一个cpp文件访问一个无序的私有Map,但是我在编译时遇到了一些错误。
我已经这样声明了Map:
class AccessList
{
private:
std::unordered_set<uint32_t> playerList;
};
在我的另一个cpp文件上,如果它是公共的,我可以访问playerList,如下所示:
auto playerIt = house->getGuestList().playerList.find(guid);
if (playerIt == house->getGuestList().playerList.end()) {
house->kickPlayer(nullptr, this);
}
然而,如果它不能是公共的,因为我在这个方法中遇到了一些崩溃。它需要是私有的。但是我怎么能访问这个Map呢?如果我像以前那样访问,我在编译时会得到这个错误:
error: ‘std::unordered_set<unsigned int> AccessList::playerList’ is private within this context
1192 | auto playerIt = house->getGuestList().playerList.find(guid);
我试过在public上设置一个函数来从private获取Map,但是没有成功。
非常感谢您的光临。
2条答案
按热度按时间xmakbtuz1#
private
类成员的全部思想是从类本身的外部控制它的可访问性。如果你需要访问它,要么使它成为public
,要么添加一个函数来返回一个指向私有成员的指针或引用。但我更愿意详细说明为什么使其
public
会导致崩溃。6jygbczu2#
我想出来的办法是:
但是,每次
guestList
访问getGuestList()
都有问题吗?