VS错误C2664(从函数返回字符串)C ++

时间:2014-05-24 12:33:39

标签: c++ string return

我确信在网站的某个地方已经回答了这个问题,但找不到它......我正在使用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;
};

2 个答案:

答案 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)

studentNamestring*(数组 - >指针)但您从函数返回string。错误消息说明了一切。返回单个字符串或

string* Student::getName()
{
    return studentName;
}