编译错误之类型错误

错误:invalid initialization of reference of type 'const Quote&' from expression of type 'const key_type {aka const std::shared_ptr<Quote>}'

解释:用const std::shared_ptr<Quote>来初始化const Quote&是无效的。aka表示also known as。

解决方式:参数问题:把const Quote& 改成const std::shared_ptr<Quote>,在自己的代码中。

    或者反过来修改,在源代码中。

     或者加const 或者去掉&,总之就是把两个类型改成同一个。

类似错误:

error: binding 'const std::__cxx11::basic_string<char>' to reference of type 'std::__cxx11::string& {aka std::__cxx11::basic_string<char>&}' discards qualifiers

解释:把const string与string&绑定在一起丢弃了限定符。discards qualifiers表示丢弃限定符

解决方式:参照示例

#include <iostream>
#include <string>
#include <map>
using namespace std;
class Test
{
    public:
        //const string &getValue(const int _key) const; 方式1 
        string &getValue(const int _key) const;//错误 把const string 
        //转成const string& 丢弃限定符 
        //string &getValue(const int _key) const; 方式2 
    private:
        map<int,string> m_data;
};
string &Test::getValue(const int _key) const
{
    
    return m_data.find(_key)->second;
    
}
int main(int argc, char *argv[])
{
    
    return 0;
}

 

posted @ 2022-04-28 21:56  菠萝超级酸  阅读(1048)  评论(0编辑  收藏  举报