繁体   English   中英

抑制 State 错误 C2440 'return': cannot convert from '_Ty2 *' to 'std::pair<t *,unsigned int> '</t>

[英]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.

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