{ {1}}这在C ++ 11中运行得非常好,但是我无法弄清楚如何在C ++中解决这个问题< 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 };
提前谢谢。
答案 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 };