【发布时间】:2021-08-25 06:01:28
【问题描述】:
我很困惑,刚学C++
class Person {
public:
string name;
double weight;
Person(string _name):name(_name) {}
Person(string n = "", double a = 0.0) {
name = n;
weight = a;
}
};
int main(){
// It`s ok.
Person p = Person("zhangwen",12);
cout << p.name << endl;
// It`s ok.
Person p3 = Person();
cout << p3.weight << endl;
// When I use it this way, the following error occurs. why????
// ambiguous conversion for functional-style cast from 'const char [7]' to 'Person'
Person p2 = Person("hhh");
cout << p2.name << endl;
return 0;
}
【问题讨论】:
-
编译器不知道它应该使用哪个构造函数,两者都一样好。您可以删除第一个构造函数 (
Person(string _name)) 来解决问题(最好重写第二个构造函数以像第一个构造函数一样使用 member initializer list)。
标签: c++