为什么在 Visual Studio 2012 中编译我的C++代码时出现错误 C2228
Why do I get error C2228 when compiling my C++ code in Visual Studio 2012?
我在尝试编译此代码时遇到几个错误:
vector<char> vsData(istreambuf_iterator<char>(vsfile), istreambuf_iterator<char>());
renderer.getDevice()-> CreateVertexShader(vsData.data(), vsData.size(), nullptr, &m_vertexShader);
错误代码为 C2228。".data"/".size"的左侧必须具有类类型。
你的第一行代码是不明确的:显然,你想定义一个vector
char
称为vsData
。但是,由于 C++ 中的语法歧义解析,称为最烦人的解析(如 @n.m 的评论中所述),您的第一行被解释为名为 vsData
的函数的函数声明,该函数接受两个参数并返回char
vector
。
正如我在上面链接的文章中所解释的,强制编译器将第一行视为变量定义的一种方法是添加一对额外的括号:
vector<char> vsData((istreambuf_iterator<char>(vsfile)), istreambuf_iterator<char>());
^ ^
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么向导Wiz0;不等于向导Wiz0();在我的代码中?C2228错误
- 为什么在 Visual Studio 2012 中编译我的C++代码时出现错误 C2228
- 获取错误代码 C2228:'._Ptr'左侧必须具有类/结构/联合