Конструктор дочернего класса - ожидал '{' - PullRequest
0 голосов
/ 26 января 2012

Я все еще изучаю C ++, и некоторые из присутствующих здесь людей мне очень помогли, спасибо всем.

У меня сейчас другая проблема: у меня есть класс B, производный от класса A, подобный этому:

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
}

Проблема в том, что когда я компилирую, он говорит, что:

errorC2969: синтаксическая ошибка: ';': ожидаемое определение функции-члена заканчивается символом '}'

И Visual Express сообщает мне:

Ошибка: ожидается '{'

когда я указываю своим курсором на точку с запятой 18 в ClassB.h (объявление конструктора ClassB).

Как я могу решить это?Я объявил этот конструктор таким образом, что он существует ... И я объявил его тело в .cpp так ... Все хорошо, верно?

Ответы [ 2 ]

1 голос
/ 26 января 2012

Объявление конструктора для ClassB в заголовке имеет список двоеточий, чего не должно быть.Это часть определения .

Итак:

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

должно читаться как:

ClassB(ClassC* classCinstance, int gnr, int type);
1 голос
/ 26 января 2012

Плохо объявлен конструктор ClassB:

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

должно быть

ClassB(ClassC* classCinstance, int gnr, int type);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...