成功创建c++类和对象
Creating c++ classes and objects successfully
我正在用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;
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象