Я решил использовать указатель в двойной для сохранения значений величины /угла, чтобы они могли быть установлены в Nullptr, когда они не используются. При написании функции для преобразования компонентов x/y в угол и величину я использовал функцию SQRT из CMATH. Для конкретных компонентов, в которые я ввел (3,4), величина должна была вернуться как 5, поскольку величина рассчитывается с использованием теоремы Пифагора. Тем не менее, он возвращался как 4,9 ..... или 5,1 ....., и я подумал, что это было просто из -за ошибок округления или отсутствия точности в представлении. Оказывается, функция SQRT () возвращалась 5, как и ожидалось, но по какой -то причине, когда это значение было назначено указателю, он случайным образом выбрал 4,9 или 5,1 и вместо этого удерживал это. Вот код: < /p>
Код: Выделить всё
void Vector2D::SetMagnitudeAndAngleFromXY() {
double temp = sqrt(pow(x_, 2) + pow(y_, 2)); //The sqrt() function returns 5
magnitude_ = &temp; //Here is where the 5 changes to 5.1 or 4.9
//Code to calculate angle
...
Подробнее здесь: https://stackoverflow.com/questions/796 ... ned-to-a-p
Мобильная версия