在旧的 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 };
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 };