1

openSG と C++ でアプリケーションを作成中です。

なぜこれらの行(174ff):

Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<<  snakeDirection<<"\n";

版画

direction 3,0,0

私のシーンの完全なコードはここにあります:

http://pastie.org/9420616#20,177

4

1 に答える 1

5

C++ では、この式により、コンパイラは括弧内のコンマを逐次評価演算子(1,2,3)として解釈するように強制されます。順次評価演算子は、最初のオペランドを評価して結果を破棄する二項演算子です。次に、2 番目のオペランドを評価し、その値と型を返します。したがって、式は次のように評価されます。void(1,2,3)

  1. 最初1に が評価されて破棄され、次に(2,3)が評価されて結果(2,3)が返されます。
  2. 最初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};
于 2014-07-25T18:27:16.357 に答える