簡體   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