class root
{
string name;
public:
root();
root(string Name)
{
Name=name;
}
~root();
void setName(string Name)
{
name=Name;
}
string getName()
{
return name;
}
};
int main()
{
string name("name");
root Root(name);
Root.setName("name");
cout<<Root.getName();
}
然后我的程序运行顺利,但如果我有
,为什么我的程序会运行 root Root; //this had to be legal, right?
而且,我为什么要
root Root(name); //declaring?
再次
root setName(name);
不必与之合作:
root Root; //??
答案 0 :(得分:1)
在您的班级说明中,您已声明root()
,但未提供该功能的定义。
所以当你执行root Root
时,你试图调用一个不存在的默认构造函数。
答案 1 :(得分:1)
如果我有
,为什么我的程序不会运行root Root; //this had to be legal, right?
您声明但从未定义构造函数Root()
。
此外,
root(string Name)
{
Name=name;
}
糟糕。您已分配给function-local参数,而不是类成员。
答案 2 :(得分:1)
root()
构造函数正文{}
root( string Name )
构造函数。它应该是:
root(string Name)
{
name=Name; // <--- notice reversed order.
}
如果我建议,您可以使用const
和&
引用:
root( const string& Name )
{
name=Name;
}