创建和使用类时,我的行为很奇怪。
我按顺序创建该类的多个实例 - 然后我创建了一些临时变量来提示用户输入一些数据,然后我使用基本的mututaor函数并将数据传递给对象的各个部分。我为第一个项目做了这个,然后是第二个,等等。
当这些personalData元素的声明是顺序的然后由于某种原因cin / getline语句跳过某些并且我无法正确输入所有数据时会发生什么。当我在语句之间展开它们创建了一个对象然后用户的输入然后更新,然后下一个对象它更好地工作但仍然不在100%的情况下。最后我发现为输入数据创建了不同的变量 - 我的临时变量也解决了问题,但是当我应该能够输入数据/更新现有数据时,必须创建十几个变量似乎很奇怪?
class personalData
{
private:
string name;
string address;
int phone;
int age;
public:
void setname(string);
void setadress(string);
void setphone(int);
void setage(int);
string getname()const;
string getadress()const;
int getage()const;
int getphone()const;
};
void personalData::setname(string n)
{ name=n; }
void personalData::setadress(string a)
{ address=a; }
void personalData::setphone(int p)
{ phone=p;}
void personalData::setage(int ag)
{age=ag;}
string personalData::getname()const
{return name;}
string personalData::getadress()const
{return address;}
int personalData::getage()const
{return age;}
int personalData ::getphone()const
{return phone;}
int main()
{
personalData my;
personalData friendd;
personalData family;
string n;
string a;
int p;
int g;
cout<<"enter your name";
getline(cin,n);
cout<<"enter your address:";
getline(cin,a);
cout<<"enter your phone:";
cin>>p;
cout<<"enter your age";
cin>>g;
my.setname(n);
my.setadress(a);
my.setphone(p);
my.setage(g);
cout<<"enter your friend's name";
getline(cin,n);
cout<<"enter your friend's address:";
getline(cin,a);
cout<<"enter your friend's phone:";
cin>>p;
cout<<"enter your friend's age";
cin>>g;
friendd.setname(n);
friendd.setadress(a);
friendd.setphone(p);
friendd.setage(g);
cout<<"enter your family member's name";
getline(cin,n);
cout<<"enter your family member's address:";
getline(cin,a);
cout<<"enter your family member's phone:";
cin>>p;
cout<<"enter your family member's age";
cin>>g;
family.setname(n);
family.setadress(a);
family.setphone(p);
family.setage(g);
cout<<"my name"<<my.getname()<<endl;
cout<<"my address"<<my.getadress()<<endl;
cout<<"my phone"<<my.getphone()<<endl;
cout<<"my age"<<my.getage()<<endl;
// more cout statements with objects.getData ...
return 0;
}
对于长篇代码抱歉,我陷入困境,无法弄清问题是什么。 感谢。