簡體   English   中英

編譯此C ++代碼時出錯

[英]Error While Compiling this C++ code

編譯此c ++代碼時出現以下錯誤。 這可能是什么原因?

     # include <iostream>
     # include <stdio.h>
     # include <conio.h>

     using namespace std;

     class Foo
     {
      int a;
      public :
      virtual void Fun1(); 

      Foo()
      {a=5;}
     };

     Class X: public Foo   // Error class does not name a type
     {
      Foo f;
      public:
      void Fun1() { }       
      X()
      {
       memset(&f,0x0,sizeof(f));
      }
     };

     int main()
     {
      X x; // Error 'X undeclared and expected ; before x, i guess because of first one
      getch();
      return 0;
      }

Class應該是class

關鍵字class以小寫c開頭。 這樣可以修復您報告的錯誤,但是仍然存在更多錯誤。

您聲明Foo::Fun1 ,但未定義它。

最后,您需要在std::memset的聲明中包含<cstring> 另一個標頭可能會間接包含它,但您不能依賴它。

然后,您將具有未定義的運行時行為,因為使用memset覆蓋非POD對象是無效的Foo具有虛函數,POD也沒有。

Class X: public Foo應該是class X: public Foo ,這應該修復這兩個錯誤。

C ++語言區分大小寫,並且要求其關鍵字以小寫形式編寫。 class是有效的C ++關鍵字,但Class不是。 在聲明X class時,將Class重命名為class。

Class X以大寫C命名。這就是問題所在。

您的錯誤實際上始於: Class X: public Foo // Error class does not name a type Class必須為class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM