私は 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â があります"。私はここを見回して、他の人がこのエラーについて不平を言っているのを見つけましたが、配列への割り当てに役立つのを見たことはありません. これを除いて、私はそれがすべて機能することを知っているので、助けは素晴らしいでしょう.