繁体   English   中英

在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'的左侧必须具有类类型。

您的第一行代码是模棱两可的:显然,您想定义一个名为vsDatachar vector 但是,由于C ++中的句法歧义解析 (称为令人讨厌的解析) (也在@nm的注释中提到),因此第一行被解释为名为vsData的函数的函数声明,该函数接受两个参数并返回一个vector char

正如我在上面链接的文章中所解释的那样,迫使编译器将第一行视为变量定义的一种方法是添加一对额外的括号:

vector<char> vsData((istreambuf_iterator<char>(vsfile)), istreambuf_iterator<char>());
                    ^                                 ^

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM