我是C ++的新手,不知道为什么我无法访问返回类型
来自.hpp文件中定义的.cpp文件。当我将Edge :: Vertex getVertex1()更改为Vertex getVertex1()时,我只得到错误
错误:使用未声明的标识符' vertex1' (边缘类中的顶点2相同)
有人可以解释为什么这种方法不好吗?
// Graph.cpp -- Graph contains main function.
#include <iostream>
#include <list>
#include <string>
#include "Vertex.h"
#include "Edge.h"
#define EDGE_DISTANCE 1
using namespace std;
class Graph
{
};
int main()
{
Vertex v1(0);
Vertex v2(1);
Edge edge(v1, v2);
// cout << edge.getVertex1() << endl;
// cout << edge.getVertex2() << endl;
return 0;
}
--------------------------------------------------------------
// Edge.h
#ifndef EDGE_H
#define EDGE_H
#include "Vertex.h"
using namespace std;
class Edge
{
private:
Vertex vertex1;
Vertex vertex2;
int weight;
public:
Edge(Vertex,Vertex);
Vertex getVertex1();
Vertex getVertex2();
};
#endif
--------------------------------------------------------------
// Edge.cpp
#include "Edge.h"
Edge::Edge(Vertex _vertex1, Vertex _vertex2)
{
vertex1 = _vertex1;
vertex2 = _vertex2;
weight = 1;
}
Edge::Vertex getVertex1() // error: no type named 'Vertex' in 'Edge'
{
return vertex1; // error: use of undeclared identifier 'vertex1'
}
Edge::Vertex getVertex2()
{
return vertex2;
}
--------------------------------------------------------------
// Vertex.h
#ifndef VERTEX_H
#define VERTEX_H
#include <list>
using namespace std;
class Vertex
{
private:
long id;
public:
list<Vertex> adjacentVertexes;
Vertex();
Vertex(long);
};
#endif
--------------------------------------------------------------
// Vertex.cpp
#include "Vertex.h"
Vertex::Vertex(long _id)
{
id = _id;
}
答案 0 :(得分:1)
错误
错误:'Edge'中没有名为'Vertex'的类型
很清楚。您尝试用作函数返回值的类型不在名为“Edge”的命名空间或类中 另一方面,为了在单独的代码文件中而不是在类声明中定义类Edge的方法,您需要从类名开始。这也将修复第二个错误,因为如果你为类创建一个方法实现(而不是stanadalone函数),它将能够访问私有属性。
所以改变这个
Edge::Vertex getVertex1()
到
Vertex Edge::getVertex1()
答案 1 :(得分:1)
您的订单已关闭:它应为<return type> <class>::<memberfuction>
Edge::Vertex getVertex1()
应该Vertex Edge::getVertex1()
答案 2 :(得分:1)
在Edge.cpp中,更改以下内容:
Edge::Vertex getVertex1()
为:
Vertex Edge::getVertex1()
Vertex Edge::getVertex2()
你也错过了Vertex的空构造函数实现。