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时都是非指针类型。
答案 0 :(得分:2)
该行
mark = new Vertex[numVert];
在内存中分配numVert
个对象(为每个对象调用默认构造函数)并返回第一个对象的地址。
在这方面,你的代码是完全合法的。
调试器说对象mark
指向的不是指针,这是正确的(它是一个对象数组)。
答案 1 :(得分:-3)
试试这个:
Vertex **mark[numVert];
mark = new Vertex *[numVert];