error C2440: “默认参数”: 无法从“const char [7]”转换为“std::string &”

代码如下:1#include2usingnamespacestd;3classStudent{4stringname;5public:6Student(string&n=... 代码如下:
1 #include
2 using namespace std;
3 class Student{
4 string name;
5 public:
6 Student(string& n ="noName") :name(n){}
7 };
8 class Teacherk{
9 string name;
10 public:
11 Teacher(string& n = "noName") :name(n){}
12 };
13 void addCourse(Student& s);
14 void addCourse(Teacher& s);
15 int main(){
16 addCourse(Teacher("Prof.DingleBerry"));
17 }
第6行和第11行显示代码错误信息 error C2440: “默认参数”: 无法从“const char [7]”转换为“std::string &”
望路过的大侠出手相救^_^
展开
 我来答
xoaxa
推荐于2018-04-04 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3476万
展开全部
#include <iostream>
using namespace std;

class Student {
string name;
public:
Student(string n ="noName") :name(n){}
 };

class Teacher {
string name;
public:
Teacher(string n = "noName") :name(n){}
 };

void addCourse(Student &s);
void addCourse(Teacher &s);
int main() {
addCourse(Teacher("Prof.DingleBerry"));
return 0;
}
追问

按你修改的新的问题又出现了

追答
void addCourse(Student &s);
void addCourse(Teacher &s);
以上两个函数只有声明,没有定义,补充完整即可。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二木林工作室
2014-11-04 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:63.3万
展开全部
构造函数括号内能用表达式?
都不知道你为什么这样写,你是想初始化n=“noName”。但是,拜托任何一个函数括号里的都是传入的参数。注意是传入的,为什么还要出事花呢。

你直接
Student(string& n):name(n){}就可以了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式