[英]C++ program error
我無法解決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();
}
}
我可以發現至少三個錯誤:
標准庫頭文件是<iostream>
,而不是<iostream.h>
。 <conio.h>
不是C ++標准庫頭,最好避免使用。
main()
必須返回int
,而不是void
。
標准庫名稱(例如cout
)在std
名稱空間中; 您需要使他們合格。
由於您沒有說要解決哪些錯誤,因此我不知道這些是否是它們,但是它們仍然是三個錯誤。 以防萬一,這是一些獎金錯誤:
3d_coord
不是有效的類名; 類名必須是一個標識符,這意味着它必須以字母或下划線開頭,而不是數字。
您不應該使用繼承來關聯coord
和3d_coord
(或在固定了獎金錯誤編號1之后選擇命名的任何方式)。 即使它們共享兩個公共成員,三維坐標也不是二維坐標。 繼承應用於is-a關系。
從流(在本例中為cin
)中提取數據后,必須進行測試以確保提取成功。
ptr
的類型為void*
; 您不能通過void*
調用成員函數(很少有情況下,最好在C ++程序中使用void*
)。
這並不是真正的錯誤,但是通常您不會在函數內部定義類(例如,有例外;例如函子)。
您沒有將類定義放入主函數中,也沒有將3d_coord類放入coord類中。
我可以發現一個:
void *ptr;
...
ptr-> plot(); // void::plot() is not
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();
似乎不是一個功能...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.