gpt4 book ai didi

c++ - 如何让我的私有(private)类对 STD 容器可见?

转载 作者:太空狗 更新时间:2023-10-29 22:53:01 25 4
gpt4 key购买 nike

这是代码:

#include <map>
class Hidden {
private:
friend class Visible;
Hidden(); { /* nothing */ }
};
class Visible {
public:
void f() {
std::map<int, Hidden> m;
m[1] = Hidden(); // compilation error, class Hidden is private
}
};

代码无法编译,因为类 Hidden 的构造函数对于类 std::map 是私有(private)的。显然,我不想让类 std::map 成为 Hidden 的友元。但是我应该在这里做什么?提前致谢!

最佳答案

将 map 添加为好友类:

#include <map>
class Hidden {
private:
friend class Visible;
friend class std::map<int, Hidden> ;
Hidden() {}
};
class Visible {
public:
void f() {
std::map<int, Hidden> m;
m[1] = Hidden(); // compilation error, class Hidden is private
}
};

当然,这意味着您必须在 Hidden 中声明所有 Hidden 用户,但这正是您使用的“私有(private)类”模式的要点...

关于c++ - 如何让我的私有(private)类对 STD 容器可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com