[英]Suppression State Error C2440 'return': cannot convert from '_Ty2 *' to 'std::pair<T *,unsigned int>'
我有源代码
#include <iostream>
#include <unordered_map>
using namespace std;
template<typename T>
class Tes
{
unordered_map < string, pair<T*, unsigned int>> m_resources;
public:
pair<T*, unsigned int> Find(const string& l_id)
{
auto itr = m_resources.find(l_id);
return (itr != m_resources.end() ? &itr->second : nullptr);
}
};
int main()
{
Tes<int> t;
pair<int*, unsigned int> tes2 = t.Find("tes");
}
它在我的模板中返回 itr 有错误。 任何人都可以帮助为什么会发生这种情况? 我在此代码中使用 unordered_map。并使用对。
好的,所以您尝试返回指针std::pair<T*, unsigned int>*
但您的成员 function 声明期望std::pair
按值std::pair<T*, unsigned int>
返回.
要解决此问题,您可以更改 function 声明以期望返回std::pair<T*, unsigned int>*
。
template<typename T>
class Tes
{
public:
pair<T*, unsigned int>* Find(const string& l_id)
{
auto itr = m_resources.find(l_id);
return itr != m_resources.end() ? &itr->second : nullptr;
}
private:
unordered_map<string, pair<T*, unsigned int>> m_resources;
};
int main()
{
Tes<int> t{};
pair<int*, unsigned int>* tes2 = t.Find("tes");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.