[英]how can i declare a Class in C++
我想在主要方法之前声明 class Person
,但它给了我一个错误,即 class Person
未定义
main
方法是制作 Object Person
但我不知道如何像使用方法一样声明它。
//main Function
int main()
{
Person person = Person("Majd", 18, 177); //Error "Person class is undefined"
person.printPerson();
}
class Person
{
//Private Attributes
int age;
int height;
string name;
//Public Atributes
public:
Person(string name, int age, int height) {
setName(name);
setAge(age);
setHeight(height);
}
//Getters
string getName() {
return name;
}
int getAge() {
return age;
}
int getHeight() {
return height;
}
//Setters
void setName(string name) {
this->name = name;
}
void setAge(int age) {
this->age = age;
}
void setHeight(int height) {
this->height = height;
}
void printPerson() {
cout << "Name: " << getName() << " Age: " << getAge() << " height: " << getHeight();
}
};
我这样做是为了学习如何声明类。
如果您将 class 上面的代码删除:
class Person;
那么你就可以做到
Person * person = 0;
或Person * person = some_other_person;
但是如果没有被告知有构造函数可以链接它,就不可能在这里实际创建一个人,或者使用一个人。
您可以将整个 class 定义移动到文件顶部,在 main.h 上方。 这将暂时解决它。
好的编程风格是创建一个名为 Person.h 的文件,将 class 放入其中,然后在主 cpp 文件中 #include "Person.h"。
class 必须始终在 main 方法之前定义,或者在用于实例化对象的方法之前定义。
原因:C++ 从上到下编译(我不是在说从左到右或从右到左,这取决于代码行中使用的运算符的关联性),并让编译器存储您想要存在的所有内容在你的 class 中,你必须在使用它之前定义它,但是,等等,这个条件不适用于 class 的函数或方法的使用,即只有声明可以在使用之前存在,但定义也必须存在(也许在我们使用函数的代码块之后)。
当@Andy Newman 谈到 header 文件时,我想提一个重要的事实。
关于 header 文件的重要事实:
如果在使用 header 文件内容的块之后包含 header 文件,那么您将收到未声明事物的错误。 原因是,当预处理器读取写入#include "header_file.h"的行时,它会立即复制并粘贴 header 文件( header_file.h )的整个代码到您的文件中,如果您在复制粘贴的块之前使用 header 文件的内容,您最终会收到非声明错误(对于需要定义的类)。
简短的摘要:
您应该在“主要”function 之前定义您的 class。
class Person
{
//Private Attributes
int age;
int height;
string name;
//Public Atributes
public:
Person(string name, int age, int height) {
setName(name);
setAge(age);
setHeight(height);
}
//Getters
string getName() {
return name;
}
int getAge() {
return age;
}
int getHeight() {
return height;
}
//Setters
void setName(string name) {
this->name = name;
}
void setAge(int age) {
this->age = age;
}
void setHeight(int height) {
this->height = height;
}
void printPerson() {
cout << "Name: " << getName() << " Age: " << getAge() << " height: " << getHeight();
}
};
//main Function
int main()
{
Person person = Person("Majd", 18, 177); //Error "Person class is undefined"
person.printPerson();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.