Я получаю эту ошибку, пытаясь реализовать psuedocode Bezier Curve в C ++ в Qt, ниже приведена реализация метода.
void GLWidget::drawBezierCurve() {
int N_PTS = vertices.size();
Point bezPoints[N_PTS][N_PTS];
for (float u = 0.0; u <= 1.0; u += 0.01){
for(int diag = N_PTS/2; diag >= 0;diag--){
for(int i = 0; i <= diag; i++){
int j = diag - i;
bezPoints[i][j] = (1.0 - u) * bezPoints[i][j+1] + u * bezPoints[i+1][j];
}
}
theImage.setPixel(bezPoints[0][0], bezPoints[0][0], RGBValue(100,12,140), 255);
}
}
Похоже, это потому, что вы умножаете float на объект Point. Скорее всего, вам понадобится определить собственный метод умножения для этой операции или перегрузить оператор *, чтобы выполнить это, в зависимости от того, на какие поля в объекте Point вы собираетесь умножать число с плавающей запятой.
Что-то вроде:
float operator* (const float num, const Point& point) {
return num * point.floating_point_field;
}
Где поле с плавающей точкой — это элемент класса, который вы хотите умножить, и он должен быть того же типа, что и число с плавающей запятой, в противном случае вам придется начать делать что-то более сложное для определения умножения.
В качестве альтернативы, если умножение так же просто, как в примере выше, вы можете просто использовать геттер в коде, например:
u * bezPoints[i][j+1].get_floating_point_value()
Надеюсь, это поможет,
Matt
Других решений пока нет …