我无法解决3个错误.程序实现是正确的,但不知道如何摆脱3个错误
# include <iostream.h>
# include < conio.h>
void main() {
class coord {
float x;
float y;
//Constructor
coord(float init_x,float init_y) {
x= init_x;
y= init_y;
}
void set(float f1, float f2) {
x = f1;
y = f2;
}
float get_x() {return x;}
float get_y() {return y;}
virtual void plot() {
cout<<x;
cout<<y;
};
class 3d_coord: public coord {
float z;
//constructor
3d_coord(float init_x,float init_y,float init_z): coord(init_x,init_y) {
z= init_z;
}
void set(float f1,float f2,float f3) {
coord::set(f1, f2); z = f3;
}
float get_z() { return z; }
virtual void plot() {
coord::plot();
cout<<z;
};
int test
void *ptr;
cin>>test;
coord a(1.1, 2.2);
3d_coord b(3.0, 4.0, 5.0);
if (test)
ptr = &a;
else
ptr = &b;
ptr-> plot();
}
}
Run Code Online (Sandbox Code Playgroud)
我发现至少有三个错误:
标准库标题<iostream>不是<iostream.h>. <conio.h>不是C++标准库头,最好避免使用.
main()必须回来int,而不是void.
标准库名称(例如cout)位于std命名空间中; 你需要对它们进行鉴定.
既然你没有说你想要解决哪些错误,我不知道这些是不是,但它们仍然是三个错误.以防万一,这里有一些奖励错误:
3d_coord不是有效的类名; 类名必须是标识符,这意味着它必须以字母或下划线开头,而不是数字.
你不应该使用继承来关联coord和3d_coord(或者你固定的奖励错误号1后你选择命名它).三维坐标不是二维坐标,即使它们共享两个共同的成员.继承应该用于is-a关系.
从流中提取数据(cin在本例中)后,必须进行测试以确保提取成功.
ptr属于void*; 你不能通过a调用成员函数void*(很少有人void*在C++程序中使用一个好主意).
这不是一个真正的错误,但通常你没有在函数内部定义类(例如,有例外;仿函数).
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |