我有一个看起来像这样的课程。我希望在 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
{
...
};
};