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++。
我使用 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++。