2013-08-27 4 views
-1

я получаю следующее сообщение об ошибке:Проблема с типами операндов

error: no match for 'operator-' (operand types are 'QVector' and 'const float')

при попытке сделать:

dist.push_back(qPow((clusterMeanCoordinate[t].at(i) - hash_notClustered[t].at(point)), 2) + qPow((clusterMeanCoordinate[w] - hash_notClustered[w].at(point)), 2)); 

Обратите внимание, что:

QHash<int, QVector<float> > clusterMeanCoordinate; 
QHash<int, QVector<float> > hash_notClustered; 
QVector<float> dist; 

ответ

1

Ваша ошибка здесь:

dist.push_back(
    qPow((clusterMeanCoordinate[t].at(i) - hash_notClustered[t].at(point)), 2) + 
    qPow((clusterMeanCoordinate[w] - hash_notClustered[w].at(point)), 2)); 
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Здесь вы делаете вычитание между QVector и const float:

clusterMeanCoordinate[w] - hash_notClustered[w].at(point) 
// QVector     - const float 

Вы можете решить эту проблему, выполнив:

clusterMeanCoordinate[w].at(i) - hash_notClustered[w].at(point) 
//      ^^^^^^ 
0

В выражении

clusterMeanCoordinate[w] - hash_notClustered[w].at(point) 

вы пытаетесь вычесть float от QVector.

Смежные вопросы