Visual Studio 报告结构向量上的 push_back() 函数调用错误
Visual Studio Reporting an error with a push_back() function call on a vector of structs
所以在程序中有一个看起来像这样的结构:
struct VERTEX
{
FLOAT X, Y, Z;
D3DXVECTOR3 Normal;
};
并且在程序头文件中有一个存储容器(一个向量)来存储顶点结构:
std::vector<VERTEX> cubeVerts;
并且在程序中有一个用结构填充结构向量的函数:
cubeVerts.push_back({-1.0f, -1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)}); // side 1
cubeVerts.push_back({1.0f, -1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
cubeVerts.push_back({-1.0f, 1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
cubeVerts.push_back({1.0f, 1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
然而 visual studio 正在报告错误,用红色下划线突出显示 push_back() 函数的每个调用的第一个大括号,并在突出显示时报告:错误:需要一个表达式。我只是想知道报告错误的原因是因为我没有将数据类型转换为 VERTEX 结构,还是在函数调用中将数据类型转换为 D3DXVECTOR3 在某种程度上是非法的?
Visual Studio C++ 2010 不支持使用初始化列表作为标准容器构造函数的参数。您应该使用更现代的 Visual Studio 版本。
所以在程序中有一个看起来像这样的结构:
struct VERTEX
{
FLOAT X, Y, Z;
D3DXVECTOR3 Normal;
};
并且在程序头文件中有一个存储容器(一个向量)来存储顶点结构:
std::vector<VERTEX> cubeVerts;
并且在程序中有一个用结构填充结构向量的函数:
cubeVerts.push_back({-1.0f, -1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)}); // side 1
cubeVerts.push_back({1.0f, -1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
cubeVerts.push_back({-1.0f, 1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
cubeVerts.push_back({1.0f, 1.0f, 1.0f, D3DXVECTOR3(0.0f, 0.0f, 1.0f)});
然而 visual studio 正在报告错误,用红色下划线突出显示 push_back() 函数的每个调用的第一个大括号,并在突出显示时报告:错误:需要一个表达式。我只是想知道报告错误的原因是因为我没有将数据类型转换为 VERTEX 结构,还是在函数调用中将数据类型转换为 D3DXVECTOR3 在某种程度上是非法的?
Visual Studio C++ 2010 不支持使用初始化列表作为标准容器构造函数的参数。您应该使用更现代的 Visual Studio 版本。