簡體   English   中英

命名空間'std'中沒有名為'size'的成員

[英]No member named 'size' in namespace 'std'

我正在嘗試將一些C ++代碼從Windows移植到OS X(使用Xcode)。

以下代碼:

writePosition %= std::size(bufferL);

正在生成錯誤:

命名空間'std'中沒有名為'size'的成員

我該如何解決?

std::size() 從C ++ 17開始可用。 嘗試為編譯器啟用-std=c++17

另外,請直接或通過#include以下任何標頭間接檢查源文件是否包含#include <iterator>

  • <array>
  • <deque>
  • <forward_list>
  • <list>
  • <map>
  • <regex>
  • <set>
  • <string>
  • <string_view>
  • <unordered_map>
  • <unordered_set>
  • <vector>

從cppreference獲取信息,我看到std::size接受兩種參數:具有名為size() (來自stl或用戶定義)和固定大小數組的方法的容器。

您應該檢查bufferL是否是其中之一。

如果bufferL是一個固定大小的數組,並且你沒有包含任何包含stl容器的頭文件,你還必須包含iterator頭文件。

為了能夠使用std::size您必須確保包含#include <iterator> 您需要檢查的另一件事是編譯器支持C ++ 17。 此功能僅適用於符合C ++ 17標准的編譯器。

將IDE中的編譯器設置更改為支持C ++ 17的編譯器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM