C++ 多态性在 Code::Blocks 17.12 中无法正常工作

C++ Polymorphism does not work as it should in Code::Blocks 17.12

我使用 Code::Blocks 学习了 C++。然而,当我试图实现继承时,编译器在文件 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

Mother.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

Daughter.cpp

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

Daughter::Daughter()
{
}

Daughter.h 应该 #include "Mother.h",因为它需要知道 Mother 是什么。

如果教程没有这么说,那就是教程错了。

改为从 a good book 学习 C++。