C++ 为什么我的类不是原型';D #包括 使用名称空间std; 类矩形; int main(){ 矩形房间(5,10); cout
您需要将类定义放在调用构造函数之前。理想情况下,您应该将其放在头文件中C++ 为什么我的类不是原型';D #包括 使用名称空间std; 类矩形; int main(){ 矩形房间(5,10); cout,c++,class,C++,Class,您需要将类定义放在调用构造函数之前。理想情况下,您应该将其放在头文件中 请删除。您需要在调用构造函数之前放置类定义。理想情况下,您应该将其放置在头文件中 请扔掉这个。这个: #include <iostream> using namespace std; class Rectangle; int main(){ Rectangle myRoom(5,10); cout << myRoom.getHeight() << endl;
请删除。您需要在调用构造函数之前放置类定义。理想情况下,您应该将其放置在头文件中 请扔掉这个。这个:
#include <iostream>
using namespace std;
class Rectangle;
int main(){
Rectangle myRoom(5,10);
cout << myRoom.getHeight() << endl;
cout << myRoom.getLength() << endl;
system("pause");
return 0;
}
class Rectangle{
private:
int height;
int length;
public:
Rectangle(int aHeight, int aLength){
height = aHeight;
length = aLength;
}
int getHeight(){
return height;
}
int getLength(){
return length;
}
};
是一个向前声明,它基本上只告诉编译器类Rectangle
存在。由于编译器不知道关于这个类的任何其他信息,Rectangle
是一个不完整的类型
在这一行:
class Rectangle;
您正在尝试创建类Rectangle
的实例,尽管类Rectangle
之前尚未定义。当然,在这种情况下,转发声明是不够的。类型Rectangle
仍然不完整
看一看,你会发现有一个很好的解释,说明了不完整类型可以做什么和不能做什么。这是:
#include <iostream>
using namespace std;
class Rectangle;
int main(){
Rectangle myRoom(5,10);
cout << myRoom.getHeight() << endl;
cout << myRoom.getLength() << endl;
system("pause");
return 0;
}
class Rectangle{
private:
int height;
int length;
public:
Rectangle(int aHeight, int aLength){
height = aHeight;
length = aLength;
}
int getHeight(){
return height;
}
int getLength(){
return length;
}
};
是一个向前声明,它基本上只告诉编译器类Rectangle
存在。由于编译器不知道关于这个类的任何其他信息,Rectangle
是一个不完整的类型
在这一行:
class Rectangle;
您正在尝试创建类Rectangle
的实例,尽管类Rectangle
之前尚未定义。当然,在这种情况下,转发声明是不够的。类型Rectangle
仍然不完整
看一看,你会发现有一个很好的解释,说明了不完整类型可以做什么,不能做什么。在这个术语的任何正式含义中都没有“原型化类”这样的东西
类类型可以声明(或前向声明,有时也指这种声明),这是您的
Rectangle myRoom(5,10);
声明。以这种方式声明的类类型只能以非常有限的方式使用。例如,您可以声明指向矩形
的指针和引用。但不允许您访问此类类的任何内部,因为编译器对此类声明中的内部一无所知。不允许您定义对象这一类的
可以定义类类型,这就是您使用
class Rectangle;
一旦定义了类(但不是之前),您就可以按任何方式使用它
在代码中,您试图定义一个对象并访问一个已声明但尚未定义的类的成员。这不起作用,也没有办法解决。您必须在代码中交换main
的定义和Rectangle
的定义
如果您愿意,您可以在main
之后定义成员函数(Rectangle::getHeight
等),但这几乎是main
之后所能做的所有事情。其他所有事情都应该在main
之前,在这个术语的任何形式意义上都没有“原型化类”这样的事情
类类型可以声明(或前向声明,有时也指这种声明),这是您的
Rectangle myRoom(5,10);
声明。以这种方式声明的类类型只能以非常有限的方式使用。例如,您可以声明指向矩形
的指针和引用。但不允许您访问此类类的任何内部,因为编译器对此类声明中的内部一无所知。不允许您定义对象这一类的
可以定义类类型,这就是您使用
class Rectangle;
一旦定义了类(但不是之前),您就可以按任何方式使用它
在代码中,您试图定义一个对象并访问一个已声明但尚未定义的类的成员。这不起作用,也没有办法解决。您必须在代码中交换main
的定义和Rectangle
的定义
如果您愿意,您可以在
main
之后定义成员函数(Rectangle::getHeight
等),但这几乎是main
之后所能做的一切。其他所有操作都应该在main
之前进行。首先,将矩形类放在头文件中。其次,不要使用系统(“暂停”)这不是一个好习惯/做法。至于你错在哪里,可能是因为你在main()之后声明了你的类。将它们放在includes之后的顶部。首先,将矩形类放在头文件中。其次,永远不要使用系统(“暂停”)这不是一个好习惯/做法。至于你错在哪里,可能是因为你在main()之后声明了你的类。把它们放在includes之后的顶部