编译此C++代码时出错

Error While Compiling this C++ code

本文关键字:出错 代码 C++ 编译      更新时间:2023-10-16

在编译这个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以小写c开头。这将修复您报告的错误,但仍有更多错误。

您声明了Foo::Fun1,但没有定义它。

最后,您需要在std::memset的声明中包含<cstring>。可能是另一个标头间接包含了它,但你不能依赖它。

然后,您将有未定义的运行时行为,因为使用memset覆盖非POD对象是无效的——Foo有一个虚拟函数,因此不是POD。

Class应该是class

Class X: public Foo应该是class X: public Foo,这应该可以修复这两个错误。

C++语言区分大小写,要求其关键字用小写书写。class是有效的C++关键字,但Class不是。在声明类X时,将Class重命名为class

Class X以大写C命名。这就是问题所在。

您的错误实际上始于:Class X: public Foo // Error class does not name a typeClass必须是class