Я в процессе создания приложения с openSG и C ++.
Может кто-нибудь сказать мне, почему эти строки (174ff):
Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<< snakeDirection<<"\n";
печать
direction 3,0,0
полный код моей сцены можно найти здесь:
В C ++ выражение (1,2,3)
заставляет компилятор интерпретировать запятые в скобках как оператор последовательной оценки.
Оператор последовательной оценки является бинарным оператором, который оценивает свой первый операнд как void
и отбрасывает результат, затем он оценивает второй операнд и возвращает его значение и тип. Поэтому выражение (1,2,3)
будет оцениваться следующим образом:
1
оценивается и отбрасывается, затем (2,3)
оценивается и результат (2,3)
возвращается2
оценивается и отбрасывается, затем 3
оценивается и результат 3
возвращаетсяСледовательно, оценка выражения (1,2,3)
вернусь 3
,
Таким образом, заявив:
Vec3f snakeDirection = (1,2,3);
то же самое, что заявить:
Vec3f snakeDirection = 3;
То, что вы, вероятно, намеревались написать, это либо:
Vec3f snakeDirection = Vec3f(1, 2, 3);
или же
Vec3f snakeDirection(1, 2, 3);
или же
Vec3f snakeDirection{1, 2, 3};
или же
Vec3f snakeDirection = {1, 2, 3};