0

これは本当に単純なことかもしれませんが、うまくいかないようです。私のVertex中には がありますstd::list<Edge>が、メソッドを呼び出そうとすると、それはpush_frontというエラーが表示され、プッシュできません。何らかの理由でコンパイラが を に変換していると思います。私のコードがうまく設定されていないことはわかっていますが、それは単なる宿題なので、いくつかの近道をとっています。listconststd::list<Edge>const std::list<Edge>

ヘッダー ファイル:

#ifndef GRAPH_H
#define GRAPH_H

#include <set>
#include <list>

class Edge{
public:
    unsigned int to;
    unsigned int weight;
};

class Vertex{
public:
    unsigned int id;
    std::list<Edge> edges;

    bool operator<(const Vertex& other) const{
        return id < other.id;
    }
};

class Graph{

public:
    void add_vertex(unsigned int id);
    void add_edge(unsigned int from, unsigned int to, unsigned int weight);
    std::set<Vertex> get_vertices();
    std::list<Edge> get_edges(unsigned int id);

private: 
    std::set<Vertex> _vertices;
    unsigned int size = 0;


};

エラーの原因となっている行:

void Graph::add_edge(unsigned int from, unsigned int to, unsigned int weight) 
{
Vertex find_vert;
find_vert.id = from;
set<Vertex>::iterator from_v = _vertices.find(find_vert);
Edge new_edge;
new_edge.to = to;
new_edge.weight = weight;

from_v->edges.push_front(new_edge); // ERROR HERE
}

実行中のコンパイラ エラー メッセージg++ -c Graph.cpp:

Graph.cpp:23:38: error: passing ‘const std::list<Edge>’ as ‘this’ argument of ‘void std::list<_Tp,
_Alloc>::push_front(const value_type&) [with _Tp = Edge; _Alloc = std::allocator<Edge>; std::list<_Tp,
_Alloc>::value_type = Edge]’ discards qualifiers [-fpermissive]
4

1 に答える 1