このコードは私には2つの問題を示す単一のエラーを与えています。テンプレートとループのトラブル
int healthyConst = 0;
int sickConst = 1;
int recoveredConst = 2;
GraphMatrix<int, double> graph (100);
for (int i = 0; i < sampleSize; i++)
{
if(std::rand() % 2 > 0.05) graph.setVertexInfo(i, sickConst); //Error
else graph.setVertexInfo(i, healthyConst);
}
エラーは次のとおりです。
error: no matching function for call to GraphMatrix::setVertexInfo(int&, int*)
とソースに次のように問題の関数が宣言されます。
void GraphMatrix::setVertexInfo(int v, VertexObject& info)
まず、私が参照すべきではありません。これは私にとって無意味なようですが、私はこれを解決することはできません。私がコンパイラよりも賢明で、for(int* i = 0...)
と入力しようとすると、エラーはsetVertexInfo(int&*, int*)
というエラーになりますが、これが何を意味するのか分かりません。
第2に、sickConstはポインタではありません。それは単なるintです。今私は、書かれているように、メソッドがVertexObject &を受け入れるが、*sickConst
でもinvalid type argument of 'unary *'
の文句を言うことをコンパイラに知らせる。また、私は&sickConst
を試しましたが、コンパイラは予期せずポインタとして解釈しません。
また、同じ理由から、forループの2行目で同じエラーがスローされることにも注意してください。
問題は次のとおりです。これらのエラーが発生するのはなぜですか。どのように修正するのですか?