gpt4 book ai didi

c++ - C++11 std::map 程序无法在 clang 3.4 中编译

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:05 26 4
gpt4 key购买 nike

我是 C++ 新手。我尝试使用“-std=c++11 -stdlib=libc++”标志在 clang 3.4 中编译一个非常简单的 std::map progeam,我遇到了我不明白的错误。

#include<map>
#include<string>

template<typename KeyType>
struct ReverseSort {
bool operator() (const KeyType& key1, const KeyType& key2) {
return (key1 > key2);
}
};

int main() {
using namespace std;
map<int, string> mapIntToString1;
map<int, string, ReverseSort<int> > mapIntToString4(mapIntToString1.cbegin(), mapIntToString1.cend());

return 0;
}

错误是:

map:457:17: error: no matching function for call to object of type 'const ReverseSort<int>'

我知道错误来自 main() 的第 3 行,只是不明白为什么。相同的程序在带有“-std=c++11”标志的 g++ 4.8.2 中很好,我相信它在 VC2010 中也很好。

谢谢。

最佳答案

您的operator() 成员必须是const:

bool operator() (const KeyType& key1, const KeyType& key2) const
{ // ^^^^^
return (key1 > key2);
}

关于c++ - C++11 std::map 程序无法在 clang 3.4 中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com