在旧的c ++(<c ++ 11)中,initializing =“”struct =“”gets =“”errors =“”

时间:2017-12-26 12:36:35

标签: c++ visual-studio-2010 glm-math

=“”
 { {1}}

这在C ++ 11中运行得非常好,但是我无法弄清楚如何在C ++中解决这个问题&lt; C ++ 11。 我出于某种原因迁移到VS2010,需要修复这些错误。

我得到的错误是:

struct Material {
    glm::vec3 ambient;
    glm::vec3 diffuse;
    glm::vec3 specular;
    float shininess;
};

Material emerald{ { 0.0215f, 0.1745f, 0.0215f },{ 0.07568f, 0.61424f, 0.07568f },{ 0.633f, 0.727811f, 0.633f },0.6f };

提前谢谢。

1 个答案:

答案 0 :(得分:5)

glm::vec3(对于一个类的typedef具有一个接受三个参数的构造函数,因此(在C ++ 11之前)你不能对你的struct使用统一或聚合初始化。

要做你想做的事,改变

Material emerald{ { 0.0215f, 0.1745f, 0.0215f },{ 0.07568f, 0.61424f, 0.07568f },{ 0.633f, 0.727811f, 0.633f },0.6f };

Material emerald = { glm::vec3(0.0215f, 0.1745f, 0.0215f),
                  glm::vec3(0.07568f, 0.61424f, 0.07568f),
                  glm::vec3(0.633f, 0.727811f, 0.633f),
                  0.6f };