C++ Can';t解决错误:间接寻址需要指针操作数(';int';无效)
我创建了一个顶点指针向量,现在我想把它们打印出来。我试图通过取消引用指针来打印它们,但没有成功,我得到了错误:C++ Can';t解决错误:间接寻址需要指针操作数(';int';无效),c++,pointers,C++,Pointers,我创建了一个顶点指针向量,现在我想把它们打印出来。我试图通过取消引用指针来打印它们,但没有成功,我得到了错误:间接寻址需要指针操作数('int'无效)。我以前打印过指针,但从未遇到过这种错误。任何帮助都会很好!提前谢谢 vector<Vertex*> vertices (numVertices + 1); for(int i=1;i<=numVertices;i++) { file >> numEdges; cout << "At
间接寻址需要指针操作数('int'无效)
。我以前打印过指针,但从未遇到过这种错误。任何帮助都会很好!提前谢谢
vector<Vertex*> vertices (numVertices + 1);
for(int i=1;i<=numVertices;i++)
{
file >> numEdges;
cout << "At vertex " << i << " the number of edges is " << numEdges << endl;
vertices[i] = new Vertex();
//Vertex newVertex;
//Using the i counter variable in the outer for loop to identify
//the what vertex what are currently looking at in order to read in the correct adjacent vertex and weight
vertices[i] -> setVertexNum(i);
//newVertex.setVertexNum(i);
for(int j=1;j<=numEdges;j++)
{
file >> adjacentVertex;
cout << "The adjacent vertex is: " << adjacentVertex << endl;
file >> weight;
cout << "The weight is: " << weight << endl;
cout << endl;
vertices[i]->setAdjacentVertex(adjacentVertex, weight);
}
vertices.push_back(vertices[i]);
}
vector<Vertex*> sortedVertices = vertices;
insertionSort(sortedVertices);
for(int i=0;i<vertices.size();i++)
{
cout << "V" << i << ": ";
cout << endl;
for(int j=0;j<*vertices[i] -> getAdjacentVertices().size();j++)
{
cout << "V" << *vertices[i] -> getAdjacentVertices()[j].getAdjVertex() << " " << *vertices[i] -> getAdjacentVertices()[j].getWeight() << endl;
}
}
/////HERE'S MY VERTEX CLASS///
#include "Edge.h"
#include <vector>
#include <climits>
#include <fstream>
using namespace std;
class Vertex
{
private:
int vertexNum; //number of the vertex for identification purposes
int degree;
bool known;
vector<Edge> adjacentVertices; //vector of vertices that are adjacent to the vertex we are currently looking at
int dv; //distance
int pv; //previous vertex
Vertex *vertex;
public:
Vertex()
{
dv = INT_MAX;
known = false;
}
void setKnown(bool Known)
{
known = Known;
}
bool getKnown()
{
return known;
}
void setVertexNum(int VertexNum)
{
vertexNum = VertexNum;
}
void setDegree(int Degree)
{
degree = Degree;
}
vector<Edge> & getAdjacentVertices()
{
return adjacentVertices;
}
int getVertexNum()
{
return vertexNum;
}
int getDegree()
{
return degree;
}
int getDV() const
{
return dv;
}
void setAdjacentVertex(int AdjacentVertex, int Weight)
{
Edge newEdge;
newEdge.setWeight(Weight);
newEdge.setAdjVertex(AdjacentVertex);
adjacentVertices.push_back(newEdge);
}
friend ostream & operator <<(ostream & outstream, Vertex & vertex)
{
outstream << vertex.vertexNum << endl;
outstream << vertex.degree << endl;
outstream << vertex.known << endl;
vector<Edge> E = vertex.getAdjacentVertices();
for(int x=0;x<E.size();x++)
{
outstream << E[x].getAdjVertex() << endl;
outstream << E[x].getWeight() << endl;
}
return outstream;
}
friend bool operator < (const Vertex & v1, const Vertex & v2);
void printVertex()
{
}
};
向量顶点(numVertices+1);
对于(int i=1;i>numEdges;
cout这是你的问题(以及所有类似的陈述):
您正在对整数应用指针解引用(这正是错误消息告诉您的)
您的代码相当于:
int adjVertex = vertices[i] -> getAdjacentVertices()[j].getAdjVertex();
*adjVerder; // Dereferencing an int make no sense
考虑将代码示例缩短到最小值。请将代码仅减去错误所在的行+足够的背景来告诉所有类型的变量所涉及的类型。我知道这是我的问题。我如何修复它?@ JOK3R去掉了<代码> */代码>。它不存在。
int adjVertex = vertices[i] -> getAdjacentVertices()[j].getAdjVertex();
*adjVerder; // Dereferencing an int make no sense