我确信在网站的某个地方已经回答了这个问题,但找不到它......我正在使用C ++在VS10下编写。我正在写一个关于学生详情的课程。其中一名成员是
string studentName[30];
应该有一个函数在请求时返回此字符串,这可以使用传统的C字符串和指针来完成,但是我想使用C ++字符串。
我的get函数看起来像这样:
string Student::getName()
{
return studentName;
}
在编译时,我从VS10得到了这个错误:
错误1错误C2664: “的std :: basic_string的< _Elem,_Traits,_AX> :: basic_string的(常量 的std :: basic_string的< _Elem,_Traits,_AX> &)':无法转换参数1 从'std :: string [30]'到'const std :: basic_string< _Elem,_Traits,_Ax> &安培;” f:\ c ++ \ hw1 \ hw1 \ hw3 \ hw3.cpp 56 1 HW3
我不确定这意味着什么。如果有人能澄清我会感激。此外,在这些get函数中,返回字符串或实际文字值的引用是很常见的(希望这是正确的术语)。
StudentName声明如下:
protected:
string studentName[30];
int studentGrades[8];
int studentAge;
};
答案 0 :(得分:2)
您将数据成员studentName定义为类型string[30]
string studentName[30];
同时函数getName的返回类型为string
string Student::getName()
现在请回答编译器如何将string[30]
类型的对象转换为string
类型的对象?
我认为你的意思是以下
string Student::getName()
{
return studentName;
}
protected:
string studentName;
int studentGrades[8];
int studentAge;
};
而不是string studentName[30]
应该只是string studentName
,因为我没有看到将学生的名字存储在30个字符串中的意义,尽管在巴西可能有包含30个字的名称:)
答案 1 :(得分:0)
studentName
是string*
(数组 - >指针)但您从函数返回string
。错误消息说明了一切。返回单个字符串或
string* Student::getName()
{
return studentName;
}