我正在尝试将graph
类编写为模板类。正如Question中所解释的那样,我试图在graph
期间实施std::set
,这是我迄今为止所写的内容。
#include <set>
template <class T,
class Container = std::set<T> >
class graph {
public:
class iterator {
public:
iterator() {
std::set<T>::iterator();
}
iterator(const iterator&) {
std::set<T>::iterator();
}
~iterator() {
std::set<T>::~iterator();
}
我在这里寻找的是每当调用graph::itertor
时,在内部它应该调用set::iterator
,这种方法是否正确,以及为什么~iterator()
没有被编译。
答案 0 :(得分:2)
我认为你想为你的图形类提供迭代器,而图形的迭代器只不过是底层容器类型的迭代器。如果是这样,那么你应该真的这样做,
template <class T, class Container = std::set<T> >
class graph
{
public:
typedef typename Container::iterator iterator;
typedef typename Container::const_iterator const_iterator;
//...
};
至于你的代码,我会说std::set<T>::iterator()
创建一个临时对象,临时在完整表达式结束时被销毁。它的故事在那里结束。 std::set<T>::~iterator()
甚至不会编译。