私は現在、鳩のハッシングを実装するクラスのプロジェクトに取り組んでいますC++。問題は、C++と私は決して友人ではなかったと私は思っていません。'const std :: __ 1 :: basic_string <char>'から 'std :: __ 1 :: basic_string <char> *'への実行可能な変換はありません。 '
具体的な問題は、私はすでに既存のオブジェクトにポインタを設定することはできません。私がそうするとき、私はコンパイルエラーを取得:
エラーが両方のために発生する 'のconstのstd :: __ 1 ::のbasic_stringに' のstd :: __ 1 ::をのbasic_string「*からのいかなる実行可能な変換ありませんステートメント:
E * activeE = e;
E * tempE = v1[pos];
v1はEオブジェクトの配列です。
私はこのエラーは、C++の基本的な考え方の誤解が原因だと思います。私はあなたにこの問題は冗談だと思うが、とにかく私を助けてくれることを願っています。
template <typename E, size_t N>
void Hashing<E,N>::add_(const E& e) {
size_t pos = h1(e);
size_t i = 0;
E * activeE = e;
E * tempE = v1[pos];
while (i < nmax) {
if (tempE == NULL) {
v1[pos] = activeE;
break;
}
v1[pos] = activeE;
activeE = tempE;
pos = h2(activeE);
tempE = v2[pos];
if (tempE == NULL) {
v2[pos] = activeE;
break;
}
v2[pos] = activeE;
activeE = tempE;
pos = h1(activeE);
tempE = v1[pos];
}
}
エラーメッセージの最後に '*'があるはずです。星に注意を払う、それらはC++で重要です。 –
あなたはポインタと参照を混同しています。 –
参照変数をポインタ変数に代入しています。タイプが一致しません。しかし、あなたが提供するエラーメッセージがあなたのコードと一致しません。 – davmac