Chr*_*s G 2 c++ generics templates iterator
我有一个 Animal 抽象类,其中我创建了像 Dog、Cat、Hamster 等子类。
我已经创建了一个方法来遍历一系列动物对象并在每个对象上调用“描述”方法。Describe 是一个纯虚函数,已在子类中实现。
我正在尝试创建一种方法来遍历任何动物容器并执行相同的操作。
这是我到目前为止所拥有的:
template <typename Container>
void describe_all(Container &c) {
typedef typename Container::iterator Iter;
for (Iter p = c.begin(); p != c.end(); ++p)
}
Run Code Online (Sandbox Code Playgroud)
我的脑子在这里一片空白,我不确定如何合并动物类。我对 C++ 还是很陌生!
你已经有了答案。只需键入呼叫describe()
template <typename Container>
void describe_all(const Container &c) {
typedef typename Container::iterator Iter;
for (Iter p = c.begin(); p != c.end(); ++p)
(*p)->describe();
}
}
Run Code Online (Sandbox Code Playgroud)
如果模板化类型不提供 describe 方法,它将不会编译。
当然,如果可以使用C++11,这段代码会更简洁。
template <typename Container>
void describe_all(const Container &c) {
for (auto ptr; c)
ptr->describe();
}
}
Run Code Online (Sandbox Code Playgroud)