编译此C ++代码时出错

时间:2012-02-16 17:26:26

标签: c++

编译此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;
      }

6 个答案:

答案 0 :(得分:2)

Class应为class

答案 1 :(得分:2)

关键字class以小写c开头。这将修复您报告的错误,但仍会有更多错误。

您声明Foo::Fun1,但不要定义它。

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

您将拥有未定义的运行时行为,因为使用memset覆盖非POD对象无效 - Foo具有虚函数,因此不是POD。

答案 2 :(得分:1)

Class X: public Foo应为class X: public Foo,这应该可以解决这两个错误。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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