C++ C++;向量值不正确

C++ C++;向量值不正确,c++,vector,opensg,C++,Vector,Opensg,我在使用OpenSG和C++创建应用程序的时候。 有谁能告诉我,为什么会有这些台词(174ff): 我的场景的完整代码可以在这里找到: < C++ >表达式>代码(1,2,3)< /代码>迫使编译器将括号内的逗号解释为顺序评价算子。 顺序求值运算符是一种二进制运算符,它将第一个操作数求值为void,并丢弃结果,然后求值第二个操作数并返回其值和类型。因此,表达式(1,2,3)将按以下方式计算: 首先计算并丢弃1,然后计算(2,3),并返回结果(2,3) 首先计算并丢弃2,然后计算3,并返回结果3

我在使用OpenSG和C++创建应用程序的时候。

有谁能告诉我,为什么会有这些台词(174ff):

我的场景的完整代码可以在这里找到:


< 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);
    


    在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);
    


    请创建一个。尝试摆脱
    =
    。您可能正在使用“3”(计算括号中的
    表达式的结果)调用一个单参数构造函数。请创建一个。尝试删除
    =
    。您可能正在使用“3”(计算括号中的
    表达式的结果)调用一个单参数构造函数。
    Vec3f snakeDirection{1, 2, 3};
    
    Vec3f snakeDirection = {1, 2, 3};