回 帖 发 新 帖 刷新版面

主题:请教

#include<iostream>
#include<string>
using namespace std;
class student{
    string name;
public:
    student(const string &s):name(s){}
};
void fn(student& s){cout<<"ok\n";}
int main(){
    fn(string("jenny"));
}
提示出错:E:\VC文件库\2.cpp(11) : error C2664: 'fn' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class student &'
        A reference that is not to 'const' cannot be bound to a non-lvalue
怎么回事

回复列表 (共5个回复)

沙发

#include<iostream>
#include<string>
using namespace std;
class student{
    string name;
public:
    student(const string &s):name(s){}
};
void fn(student& s){cout<<"ok\n";}
int main(){
    string str("jenny");
    student s(str);
    fn(s);
}

板凳

string str("jenny");
    student s(str);
    fn(s);
这几步还不太明白,请说详细些

3 楼

const表明是常量,常量应该一开始就初始化,其他地方不能赋值

4 楼

student(const string &s):name(s){}
const string &s引用应该在之前定义一变量,引用的是地址,*指针就可以

5 楼

student(const string &s):name(s){}
const string &s引用应该在之前定义一变量,引用的是地址,*指针就可以

我来回复

您尚未登录,请登录后再回复。点此登录或注册