こんなクラスがあります。ParentクラスにParentMemberのtypedefを設定し、名前をMemberに変更したいと思います。これはどのように可能でしょうか?私が見ることができる唯一の方法は、継承を使用する代わりに、パブリックメンバーとしてstd::vectorを使用することです。
typedef std::pair<std::string, boost::any> ParentMember;
class Parent: public std::vector<ParentMember>
{
public:
template <typename T>
std::vector<T>& getMember(std::string& s)
{
MemberFinder finder(s);
std::vector<ParentMember>::iterator member = std::find_if(begin(), end(), finder);
boost::any& container = member->second;
return boost::any_cast<std::vector<T>&>(container);
}
private:
class Finder
{
...
};
};