0
我有一个类似这样的类。我更喜欢在Parent类中获得ParentDeb的typedef并将其重命名为Member。这怎么可能?我能看到的唯一方法是将std :: vector作为公共成员,而不是使用继承。在父类中包含儿童的typedef
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
{
...
};
};
你[不应从公开的std ::向量继承(http://stackoverflow.com/questions/4353203/thou-shalt-not-inherit-from-stdvector)。 – juanchopanza
@juanchopanza'其实,std :: vector的公有继承没有任何问题。如果你需要这个,就这样做。“所以......为什么不呢?你不应该使用多态,因为向量没有虚拟角色,但是从向量继承是可以的。 – ForEveR
你还可以提供一个可以使用你的类(和Parent :: Member类型)的代码吗? – UnknownGosu