这个问题已经在这里被问过——实际上不止两次——但我自己无法从帖子中找到解决我的问题的方法。
我所拥有的是一个库,其中包含一个名为的类A
。从课堂A
上我需要访问一个std::map<>
,但它是私有的。此外,根据我在我提到的帖子中发现的可能性,类没有A
模板化功能。
我实际上能够重新编译库,这样我就可以简单地改变可见性。但是,这将是很多工作——而且我不确定改变可见性是否不会让其他任何东西崩溃。
我想做的是,在课堂上B
:
// NOT MY CODE -- library <a.h>
class A {
private:
std::map<int, int> A_map;
};
// MY CODE -- module "b.h"
# include <a.h>
class B : private A {
public:
B() {
for (auto it(A_map.begin()); it != A_map.end(); ++it) {
...;
}
}
};
我如何在不更改原始类的情况下做到这一点——并且在基类中没有任何可用的模板化方法可以重载/专门化?