我有一个顶点类,它有一个id和邻接列表作为私有成员。邻接列表存储为映射。当我实例化这个类的对象时,我想创建一个空映射。我正在从python切换到C ++,它的证明比我想象的更难。这是该课程的代码:
#include "vertex.h"
class Vertex {
char _id;
std::map<char, int> _adjList;
public:
void addNeighbor(Vertex, char neighbor, int weight);
std::vector<char> getConnections(Vertex);
char getId();
int getWeight(Vertex, char neighbor);
Vertex(char);
};
Vertex::Vertex(char id){
std::map<char, int> adjList;
_adjList = adjList;
_id = id;
}
void Vertex::addNeighbor(Vertex v, char neighbor, int weight){
v._adjList.insert(std::map<char, int>::value_type(neighbor, weight));
}
std::vector<char> Vertex::getConnections(Vertex v){
std::vector<char> ids;
for(std::map<char,int>::iterator it = v._adjList.begin(); it != v._adjList.end(); ++it) {
ids.push_back(it->first);
};
return ids;
}
char Vertex::getId(){
return _id;
}
int Vertex::getWeight(Vertex v, char neighbor){
return v._adjList[neighbor];
}
现在我在main
中实例化了这个Vertex V('a');
编译器抛出一个错误,即变量的类型为Vertex。任何帮助是极大的赞赏。基本上我想构造一个具有id和空映射的对象,该映射将id和路径权重保存到相邻节点。我这样做是为了学习目的
我的vertex.h有:
#ifndef __graphs__vertex__
#define __graphs__vertex__
#include <stdio.h>
#include <map>
#include <vector>
class Vertex;
#endif
然后在我的主要内容中包含vertex.h
答案 0 :(得分:1)
Vertex的定义应该在标题中,而不是在cpp:
中我修改了方法声明以添加const
并删除参数Vertax,因为您应该使用this
值。
#ifndef graphs_vertex_h
#define graphs_vertex_h
#include <map>
#include <vector>
class Vertex {
char _id;
std::map<char, int> _adjList;
public:
explicit Vertex(char);
void addNeighbor(char neighbor, int weight);
std::vector<char> getConnections();
char getId() const;
int getWeight(char neighbor) const;
};
#endif