为什么string在类的构造函数里不能用
好吧
既然你愿意把一个错误的答案当作正解我也不能阻止你.
但是出于人道, 我还是提醒一下:
1. 默认构造函数是不带参数的构造函数, string(char*)是不能称为默认构造函数的.
2. string 是有 string(const char*) 这种形式的构造函数的.
[解决办法]
class Student
{private:
string name;
public:
Student(string n):name(n.c_str()){} //为什么这样不对
//要这样 Student(const char*n):name(n){}
};
int main()
{
Student s(string("Nick"));
return 0;
}
试试这个,理解string的构造函数的参数
[解决办法]
楼主用的什么编译器?用的哪个stl库?
在我这里是没有问题的(除了类定义少个分号)
检查一下你的stl库中basic_string的构造,如果
basic_string( char const *)
或是
basic_string( char const *, A const & = A())
类型的构造函数被加上了explicit声明,那么Student s("Nick")就无法通过编译,必须显示指明char const * 到string的转换:Student s(string("Nick"));
[解决办法]
我试了
#include<string>
using namespace std;
class Student
{
private:
string name;
public:
Student(string n):name(n.c_str()){}//为什么这样不对 实际对的
//要这样 Student(const char*n):name(n){}
};
int main()
{
Student s("Nick");
return 0;
}