以下C ++深度优先搜索程序无法编译。
#include <iostream>
using namespace std;
class Stack
{
private:
const int size=20;
int *st;
int top;
public :
Stack(){
st =new int[size];
top=-1;
}
~Stack(){
delete[] st;
top=-1;
}
void push(int j){
st[++top]=j;
}
int pop(){
return st[top--];
}
int peek(){
return st[top];
}
bool empthy(){
return (top==-1);
}
};
class Vertex{
public:
char label;
bool visited;
public:
Vertex(){
}
Vertex(char lab){
label=lab;
visited=false;
}
};
class Graph{
private:
const int maxvertex=20;
Vertex* vertexlist;
int **adj;
int nverts;
Stack *stack;
public:
Graph(){
vertexlist=new Vertex[maxvertex];
adj=new int*[maxvertex];
for (int i=0;i<20;i++)
adj[i]=new int[maxvertex];
nverts=0;
for (int i=0;i<maxvertex;i++){
for (int j=0;j<maxvertex;j++){
adj[i][j]=0;
}
}
stack=new Stack();
}
void add(char lab){
vertexlist[nverts++]=new Vertex(lab);
}1
};
int main(){
return 0;
}
以下是我得到的编译错误:
> 6 IntelliSense: no operator "=" matches these
> operands c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 76 23 DFS 7 IntelliSense: expected a
> declaration c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 77 3 DFS Error 1 error C2864:
> 'Stack::size' : only static const integral data members can be
> initialized within a class c:\users\datuashvili\documents\visual
> studio 2010\projects\dfs\dfs\dfs.cpp 8 1 DFS Error 3 error C2864:
> 'Graph::maxvertex' : only static const integral data members can be
> initialized within a class c:\users\datuashvili\documents\visual
> studio 2010\projects\dfs\dfs\dfs.cpp 54 1 DFS Error 2 error C2758:
> 'Stack::size' : must be initialized in constructor base/member
> initializer list c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 12 1 DFS Error 4 error C2758:
> 'Graph::maxvertex' : must be initialized in constructor base/member
> initializer list c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 60 1 DFS Error 5 error C2679: binary '='
> : no operator found which takes a right-hand operand of type 'Vertex
> *' (or there is no acceptable conversion) c:\users\datuashvili\documents\visual studio
> 2010\projects\dfs\dfs\dfs.cpp 76 1 DFS
答案 0 :(得分:2)
更改
const int size=20;
到
static const int size=20;
(静态意味着它将每个类初始化一次,而不是每个对象需要一个初始化列表)
vertexlist[nverts++]=new Vertex(lab);
您尝试将Vertex
设置为Vertex*
。这不会编译。