我是 C++ 新手,正在努力尝试使多文件程序正常工作。我有一个用 C 语言运行的图形库,但在将其转换为 C++ 时遇到了麻烦。g++ 我最大的问题是这个错误信息,
error: no match for âoperator=â in â*(((Graph*)this)->Graph::adj +
((long unsigned int)(((long unsigned int)i) * 32ul))) = (operator
new(32u), (<statement>, ((List*)<anonymous>)))â
这是我抱怨的 Graph.cpp 代码部分:
Graph::Graph(int n){
order = n;
size = 0;
source = NIL;
color = static_cast<char*>(calloc(n + 1, sizeof(char)));
distance = static_cast<int*>(calloc(n + 1, sizeof(int)));
parent = static_cast<int*>(calloc(n + 1, sizeof(int)));
adj = static_cast<List*>(calloc(n + 1, sizeof(List*)));
discover = static_cast<int*>(calloc(n + 1, sizeof(int)));
finish = static_cast<int*>(calloc(n + 1, sizeof(int)));
int i;
for(i = 0; i <= n; i++){
color[i] = 'w';
distance[i] = INF;
parent[i] = NIL;
adj[i] = new List();
}
}
正如您所看到的,我在 C 和 C++ 之间使用了一些混合体,但是纯 C++ 实现也不起作用。在我的文件中,我不断收到错误“错误:â->â 的基本操作数具有非指针类型âListâ”,我认为这一切都来自我的声明方式。我在这里环顾四周,发现其他人抱怨这个错误,但我没有看到它有助于分配给数组。帮助会很棒,因为除此之外我知道这一切都有效。