Использование класса шаблона итератора в качестве параметра функции

return Graph_iterator_Vertex(Vertexs.begin());

Я не понимаю, почему эта строка называется конструктором копирования, хотя есть мой конструктор с параметром. Параметр конструктора аргументов написан специально для этого дизайна.
Все, что я нашел о подобной проблеме, является использованием 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"

1

Решение

ты должен использовать

std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::const_iterator

вместо

std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>>

как тип вашего параметра функции.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]