【发布时间】:2013-10-14 16:50:15
【问题描述】:
return Graph_iterator_Vertex(Vertexs.begin());
我不明白为什么将这一行称为复制构造函数,尽管我的构造函数有一个参数。专门为此设计编写的 arguments 构造函数参数。 我发现的关于类似问题的所有内容都是 typename 的使用。但这并没有解决我的问题。
struct Graph_iterator_Vertex
{
private:
typename std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::iterator iterator;
public:
Graph_iterator_Vertex(typename std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>> iterator_)
{
iterator=iterator_
}
};
const Graph_iterator_Vertex begin(void) const
{
return Graph_iterator_Vertex(Vertexs.begin());
}
在哪里
std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>> Vertexs;
错误:
error C2440: <function-style-cast>: can not be converted std::_Vector_const_iterator<_Myvec>"in "Graph<Type_Of_Value_Vertex,Type_Of_Value_Edge>::Graph_iterator_Vertex"
【问题讨论】:
-
了解
iterator和const_iterator之间的区别。还知道const成员函数(例如代码中的begin)对成员数据的作用(例如Vertexs;注意它会改变它的常量!)。
标签: c++ templates iterator template-classes