错误:没有从“edge”到“const value_type”的可行转换?

Posted

技术标签:

【中文标题】错误:没有从“edge”到“const value_type”的可行转换?【英文标题】:error: no viable conversion from 'edge' to 'const value_type'? 【发布时间】:2016-05-14 21:55:19 【问题描述】:

我只是尝试使用 C++ 中的向量、列表和类来实现有向加权图,但是我收到了这个错误。它给我这个错误的行是第 42:21 行,其中graph[u].push_back(edge(v, w));

#include <iostream>
#include <vector>
#include <list>
#include <stack>

using namespace std;

class edge

    private:
        int cost;
        int vertex;
    public:
        edge(int vertex, int cost)
        
            this->vertex = vertex;
            this->cost = cost;
        
        int getVertex() const
        
            return vertex;
        
        int getCost() const
        
            return cost;
        
;

class Graph

    private:
        int V;  
        std::vector<std::list<edge> > *graph;
    public:
        Graph(int V);
        void addEdge(int u, int v, int w);
        void DFS();
;
Graph::Graph(int V)

    this->V = V;
    graph = new std::vector<std::list<edge> >(V);


void Graph::addEdge(int u, int v, int w)

    graph[u].push_back(edge(v, w));

int main()

    return 0;

感谢您的帮助!

【问题讨论】:

【参考方案1】:

graph 是指向向量的指针,而不是向量,所以你想要:

(*graph)[u].push_back(edge(v, w));

但它似乎不需要是指针。只是一个普通的向量不是更简单吗?它也可以解决您的内存泄漏问题。

【讨论】:

如果我将它从指针中删除,它会给我这个错误:错误:没有可行的重载'='图=新的std::vector<:list>>(V) ; 删除new。或者,更好的是,在构造函数中使用成员初始化器。

以上是关于错误:没有从“edge”到“const value_type”的可行转换?的主要内容,如果未能解决你的问题,请参考以下文章

可能会利用Microsoft Edge错误将您的电子邮件泄露到恶意网站

edge提示#-200:httperror

const修饰符

为什么我的输入onChange不能在Edge中工作?

JavaScript 本地存储在 Chrome 和 Edge 中被删除,但在 Firefox 中没有

MS Edge错误地呈现页面