この質問はすでにここで(実際には2回以上)尋ねられていますが、私自身は投稿から問題の解決策を導き出すことができませんでした。
私が持っているのは、とりわけ、その中に名前が付けられたクラスを備えたライブラリ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) {
...;
}
}
};
元のクラスを変更せずに、また、オーバーロード/特殊化するための基本クラスで使用可能なテンプレートメソッドを使用せずに、どうすればよいですか?