C ++ Полиморфизм не работает так, как должно быть в Code :: Blocks 17.12 - PullRequest
0 голосов
/ 12 января 2020

Я выучил C ++, используя Code :: Blocks. Тем не менее, компилятор выдает мне ошибку в файле Daughter.h, строка 6, говоря: "error: expected-class name before '{' token", когда я пытаюсь реализовать наследование. Это смущает меня больше, потому что учебник, который я наблюдаю с использованием Code :: Blocks и компилятора в этом учебнике, не дает никаких ошибок, он фактически работает отлично. Я немного расстроен этим моментом. Кто-нибудь знает, как заставить это работать? Вот все мои файлы:

main. cpp

//main.cpp
#include "Daughter.h"
#include "Mother.h"
#include <iostream>
using namespace std;

int main()
{
    Mother jelo;
    jelo.sayname();
    Daughter tina;
    tina.sayname();
}

Mother.h

//Mother.h
#ifndef MOTHER_H
#define MOTHER_H


class Mother
{
    public:
        Mother();
        void sayname();
};

#endif // MOTHER_H

Мать. cpp

//Mother.cpp
#include "Daughter.h"
#include "Mother.h"
#include <iostream>
using namespace std;

Mother::Mother()
{
}

void Mother::sayname() {

    cout << "I am Roberts" << endl;

}

Daughter.h

//Daughter.h
#ifndef DAUGHTER_H
#define DAUGHTER_H


class Daughter: public Mother
{
    public:
        Daughter();
};

#endif // DAUGHTER_H

Дочь. cpp

//Daughter.cpp
#include "Daughter.h"
#include "Mother.h"
#include <iostream>
using namespace std;

Daughter::Daughter()
{
}

1 Ответ

0 голосов
/ 12 января 2020

Daughter.h должен #include "Mother.h", потому что он должен знать, что такое Mother.

Если учебник не говорит об этом, учебник неверен.

Изучите C ++ из хорошая книга вместо

...