成功创建c++类和对象

Creating c++ classes and objects successfully

本文关键字:对象 c++ 创建 成功      更新时间:2023-10-16

我正在用C++从头开始编写一个应用程序,从一开始我就在定义一个类、为它创建构造函数和创建该类的实例/对象方面遇到了困难。我在编写代码时会检查代码以避免错误,但当我试图创建类的对象时,问题就开始了。我会感谢任何人的帮助。也可能是我用错误的方法在c++中创建类、构造函数等。我将感谢修改我的代码和任何建议。当我运行下面的代码时,我会收到错误消息"不匹配运算符<lt;'和"二进制表达式的无效操作数">

#include <string>
using namespace std;
class Person
{
public:
Person(string firstName, string lastName, string nationality, string occupation);
Person();
void setFirstName(string firstName)
{
this->firstName = firstName;
}
void getFirstName()
{
cout << firstName;
}
void setLastName(string lastName)
{
this->lastName = lastName;
}
void getLastName(){
cout << lastName;
}
void setNationality(string nationality)
{
this->nationality = nationality;
}
void getNationality()
{
cout << nationality;
}
void setOccupation(string occupation)
{
this->occupation = occupation;
}
void getOccupation()
{
cout << occupation;
}
public:
string firstName;
string lastName;
string nationality;
string occupation;
};
int main()
{
Person p3;
p3.setFirstName("Larra");
cout << p3.getFirstName();
cout << p3.firstName;
return 0;
}

我已将代码更改为下面的代码。但我现在收到的错误消息是"collect2:error:Id返回1退出状态"。我该怎么修?

#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(string firstName, string lastName, string nationality, string occupation);
Person();
void setFirstName(string firstName)
{
this->firstName = firstName;
}
string getFirstName()
{
return firstName;
}
void setLastName(string lastName)
{
this->lastName = lastName;
}
string getLastName(){
return lastName;
}
void setNationality(string nationality)
{
this->nationality = nationality;
}
string getNationality()
{
return nationality;
}
void setOccupation(string occupation)
{
this->occupation = occupation;
}
string getOccupation()
{
return occupation;
}
public:
string firstName;
string lastName;
string nationality;
string occupation;
};
int main()
{
Person p3;
p3.setFirstName("Larra");
cout << p3.firstName;
return 0;
}```

******************************************************************
I HAVE FINALLY GOT IT WORKING. THANKS TO EVERYONE THAT HELPED. I  commented out two lines around the start of the program and it started working. You can see the working version below.
******************************************************************
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
string firstName;
string lastName;
string nationality;
string occupation;
public:
//Person(string firstName, string lastName, string nationality, string occupation);
//Person();
void setFirstName(string firstName)
{
this->firstName = firstName;
}
string getFirstName()
{
return firstName;
}
void setLastName(string lastName)
{
this->lastName = lastName;
}
string getLastName(){
return lastName;
}
void setNationality(string nationality)
{
this->nationality = nationality;
}
string getNationality()
{
return nationality;
}
void setOccupation(string occupation)
{
this->occupation = occupation;
}
string getOccupation()
{
return occupation;
}
};
int main()
{
Person p3;
p3.setFirstName("Larra");
p3.setLastName("Marrudds");
cout << p3.firstName << 'n' << p3.lastName <<endl;
return 0;
}

重载类的构造函数和<<ostream的运算符。这将允许您使用运算符<lt;使用std::cout输出您想要的任何内容。同样对于构造函数,如果您不想在声明对象时设置参数,可以使用以下内容:

Person() = default;

然后有一个替代的集合函数或另一个构造函数。

此外,对于您的成员变量国籍和职业,您的参数是相同的。它们一定是不同的。

#include <iostream>
#include <ostream>
#include <string>
using namespace std;
class Person
{
public:
string firstName;
string lastName;
string Nationality;
string Occupation;
Person() = default; // Overload the constructor
Person(string firstName, string lastName, string n, string o)
{
// You could use this also,
this->firstName = firstName;
this->lastName = lastName;
this->Nationality = n;
this->Occupation= o;
// etc...
};

void setFirstName(string firstName)
{
this->firstName = firstName;
}
void getFirstName()
{
cout << firstName;
}
void setLastName(string lastName)
{
this->lastName = lastName;
}
void getLastName(){
cout << lastName;
}
void setNationality(string nationality)
{
this->Nationality = nationality;
}
void getNationality()
{
cout << Nationality;
}
void setOccupation(string occupation)
{
this->Occupation = occupation;
}
void getOccupation()
{
cout << Occupation;
}
// Overload operator
friend std::ostream& operator<<(std::ostream &os, Person &p)
{
os << p.firstName << " " << p.lastName << " " << p.Nationality << " " << p.Occupation;
return os;
}
};
int main()
{
Person p3;
Person p4("Jack", "Hanson", "Nationality", "Ocupation");
p3.setFirstName("Larra");
p3.setLastName ("Hanson");
cout << p3 << endl;
cout << p4 << endl;
return 0;
}