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

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

本文关键字:初始化 结构 出错 c++11 c++ lt      更新时间:2023-10-16
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(是类的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 };

to

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