2010-10-01 52 views
1

我無法解決3錯誤。項目實施是正確的,但不知道如何擺脫3個錯誤C++程序錯誤

# 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(); 
     } 
    } 
+1

請正確格式化 – 2010-10-01 03:23:50

+1

通過將四個空格中的每一條戰線請格式化你的代碼線。如果選擇要格式化的文本,「0101」按鈕會自動執行此操作。謝謝! – 2010-10-01 03:24:58

+11

堆棧溢出社區不是C++編譯器。如果你的C++編譯器給你提供了錯誤,你應該指出那些錯誤是什麼(請確切的文字!),以及編譯器說錯誤的源頭在哪裏。 – 2010-10-01 03:25:14

回答

6

我能發現至少有三個錯誤:

  1. 標準庫頭是<iostream>,不<iostream.h><conio.h>不是C++標準庫頭,最好避免。

  2. main()必須返回int而不是void

  3. 標準庫名稱(例如cout)位於std命名空間中;你需要限定他們。

由於您不想說要解決哪些錯誤,我不知道這些是他們,但他們仍然是三個錯誤。以防萬一,這裏有一些額外的錯誤:

  • 3d_coord是不是一個有效的類名;類名必須是一個標識符,這意味着它必須以字母或下劃線開頭,而不是數字。

  • 您不應該使用繼承關聯coord3d_coord(或者您在修正了第1個錯誤號後選擇的名稱)。三維座標不是二維座標,即使它們共享兩個通用成員。繼承應該用於is-a關係。

  • 從流中提取數據(cin,在這種情況下)後,您必須進行測試以確保提取成功。

  • ptr屬於void*;你不能通過void*調用成員函數(很少有人在C++程序中使用void*是個好主意)。

  • 這不是一個真正的錯誤,但通常你沒有在函數內部定義類(例如有函數,例如函數)。

+0

HHI詹姆斯...你能發給我正確的代碼?那是wud be gr8 james – 2010-10-01 03:37:59

+9

我不這麼認爲,@Julia。 – 2010-10-01 03:38:52

+0

如果我m代替3d_coord ...與其他一些名字..它hwoing我16錯誤 – 2010-10-01 03:43:01

0

您不要將類定義放在主函數中,也不要將3d_coord類放在coord類中。

+0

Erros我geting:在行28 {預計 – 2010-10-01 03:35:28

+0

行63聲明終止不正確和行63聲明丟失; – 2010-10-01 03:36:05

0

我能發現一個:

void *ptr; 
... 
ptr-> plot(); // void::plot() is not 
0
  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(); 

不似乎是一個功能...