子类构造函数 - 期望'{'

时间:2012-01-26 13:23:41

标签: c++ constructor parent-child

我还在学习C ++,这里的一些人帮助了我很多,谢谢大家。

我现在还有另外一个问题:我有一个来自A类的B类:

ClassB.h

#ifndef CLASSB
#define CLASSB

#include <cstdlib>
#include <string>
#include <vector>
#include <time.h>

    using namespace std;
    #include "ClassA.h"

    class ClassA;

    class ClassB: public ClassA{

        public:

            ClassB(ClassC* classCinstance, int gnr, int type) : ClassA(classCinstance);
    };

    #endif

ClassB.cpp

#include "ClassB.h"

ClassB::ClassB(ClassC* classCinstance, int gnr, int type) : ClassA(classCinstance){
    //Some stuff
}

问题在于,当我编译时,它说:

  

错误C2969:语法错误:';' :期望的成员函数定义   以'}'结尾

Visual Express告诉我:

  

错误:预期为'{'

当我将光标指向ClassB.h中的分号结束行18(ClassB的构造函数声明)时。

我该如何解决?我声明了这个构造函数,所以它存在......我在.cpp声明它的主体......所以一切都很好,对吗?

2 个答案:

答案 0 :(得分:1)

ClassB构造函数声明错误:

ClassB(ClassC* classCinstance, int gnr, int type) : ClassA(classCinstance);

必须是

ClassB(ClassC* classCinstance, int gnr, int type);

答案 1 :(得分:1)

标题中ClassB的构造函数声明有一个冒号列表,它不应该。这是定义的一部分。

所以:

ClassB(ClassC* classCinstance, int gnr, int type) : ClassA(classCinstance);

应为:

ClassB(ClassC* classCinstance, int gnr, int type);