创建类型结构的指针数组

时间:2012-10-21 19:25:29

标签: c++ arrays pointers

struct Vertex{
    int num;
    int low;
    bool seen;
    Vertex *parent;
    Vertex(){
        num = 0; low = 0; seen = false; parent = NULL;
    }
};

这是结构。问题是,当我尝试创建一个Vertex类型的数组时,调试器会声明它是非指针类类型。这是我宣布它的方式:

Vertex *mark;
mark = new Vertex[numVert];

(标记在类中声明,赋值在默认构造函数中完成)。

我之前已经声明了指针数组。它现在不起作用的原因是什么?

Graph::Graph(int v){
int i;
numVert = v;
count = 0;
mark = new Vertex[numVert];
matrix = new int*[numVert];
for (i=0;i<numVert;i++){
    mark[i]->seen = false;
    matrix[i] = new int[numVert];
    for (int j=0; j<numVert;j++)
        matrix[i][j]=0;
    }
}

这是最初调用的地方。它声明它在数组的赋值和将其“see”成员赋值为false时都是非指针类型。

2 个答案:

答案 0 :(得分:2)

该行

mark = new Vertex[numVert];

在内存中分配numVert个对象(为每个对象调用默认构造函数)并返回第一个对象的地址。 在这方面,你的代码是完全合法的。

调试器说对象mark指向的不是指针,这是正确的(它是一个对象数组)。

答案 1 :(得分:-3)

试试这个:

Vertex **mark[numVert]; 
mark = new Vertex *[numVert];