为什么总是显示“没有可用的默认构造函数”
# include <iostream># include <string>
class Lovers
{
public:
std::string name;
Lovers(std::string thename);
void kiss(Lovers *lover);
void ask();
};
Lovers::Lovers(std::string thename)
{
name = thename;
}
voidLovers::kiss(Lovers *lover)
{
std::cout<<name<<"亲了一下"<<lover->name;
}
class Boyfirend : public Lovers
{
public:
Boyfirend(std::string thename);
void kiss(Lovers *love);
};
void Boyfirend::kiss(Lovers *lover)
{
}
Boyfirend::Boyfirend(std::string thename) : Lovers(thename)
{
}
class Girlfirend : public Lovers
{
public:
Girlfirend(std::string thename);
};
Girlfirend::Girlfirend(std::string thename) : Lovers(thename)
{
}
int main(void)
{
Lovers * pt = new Boyfirend();
return 0;
} 因为你的类确没有默认的构造函数啊
你自己写的构造函数已经覆盖了隐藏了默认构造函数
Boyfirend(std::string thename);
调用的时候要指明参数string,或者自己在类里显示声明不带参数的构造函数,或者,给参数设定默认参数
Boyfirend(std::string thename=“null”);
页:
[1]