将string构造作为函数参数传递

时间:2014-12-13 10:03:59

标签: c++

查看打击代码: 当我使用gcc时,第二行是编译错误? gcc显示没有匹配函数来调用(int,std :; string,int,int);

    model::FriendInfo(0, std::string(""), 0, 0);
    struct FriendInfo{
            uint32_t uid;
            std::string nick_name;
            uint16_t head_id;
            uint16_t level;
            FriendInfo(uint32_t m_uid, std::string& m_nick_name,  uint16_t m_head_id, uint16_t m_level):
                uid(m_uid), nick_name(m_nick_name), head_id(m_head_id), level(m_level){}
    }

1 个答案:

答案 0 :(得分:0)

声明构造函数参数,如

const std :: string& m_nick_name

您不能使用非常量引用绑定临时对象(在您的情况下为std :: string(""))。

同样如果调用构造函数

model::FriendInfo(0, std::string(""), 0, 0);

未分配给某个对象,则此表达式中没有任何意义。