Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t解决错误:间接寻址需要指针操作数(';int';无效)_C++_Pointers - Fatal编程技术网

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