0
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;
    }
}

这是它最初被调用的地方。它声明它在数组的分配和它的'seen'成员的分配上都是非指针类型的。

4

2 回答 2

2

线

mark = new Vertex[numVert];

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

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

于 2012-10-21T19:33:58.877 回答
-3

尝试这个:

Vertex **mark[numVert]; 
mark = new Vertex *[numVert]; 
于 2012-10-21T19:36:01.147 回答