Joo*_*. P 1 c++ visual-studio-2010 glm-math
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 };
Run Code Online (Sandbox Code Playgroud)
这在C++ 11中完全正常,但我无法弄清楚如何在C++ <C++ 11中解决这个问题.我出于某种原因迁移到VS2010,需要修复这些错误.
我得到的错误是:
looks like a function definition, but there is no formal parameter list; skipping apparent body
Run Code Online (Sandbox Code Playgroud)
先感谢您.
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 };
Run Code Online (Sandbox Code Playgroud)
至
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 };
Run Code Online (Sandbox Code Playgroud)