在旧的 c++ (<c++11) 中,初始化结构会出错

In old c++ (<c++11), initializing struct gets errors

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

这在 C++11 中工作得很好,但我不知道如何在 C++ < C++11 中解决这个问题。 我出于某种原因迁移到 VS2010,需要修复这些错误。

我得到的错误是:

looks like a function definition, but there is no formal parameter list; skipping apparent body

提前致谢。

glm::vec3(是 class 的 typedef)具有接受三个参数的构造函数,因此(在 C++11 之前)您不能使用 uniform 或为您的结构聚合初始化。

做你想做的,改变

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