基类未定义。错误C2504

时间:2017-08-16 03:52:43

标签: c++ inheritance visual-studio-2017

遵循本教程(https://www.youtube.com/watch?v=gq2Igdc-OSI&index=52&list=PLAE85DE8440AA6B83)我在Visual Studio C ++ 2017上遇到了4个错误。其中3个是同一个错误,只是重复母亲&#39 ;:在base.h中未定义的基类文件。另一个错误是:' sayName'不是“女儿”的成员。现在这里是代码。我希望程序打印非常简单...我希望它打印出两行"你在那里做什么?"如果你能帮我解决这个问题,那就太好了。谢谢。 对于主文件     `#include" stdafx.h"     #包括     #包括" Daughter.h"     #包括" Mother.h"     使用namespace std;

int main()
{
    Mother pot;
    pot.sayName();
    Daughter kettle;
    kettle.sayName();
    int pause = 0;
    cin >> pause;
}

Mother.h
#ifndef MOTHER_H
#define MOTHER_H

class Mother
{
public:
    Mother();
    void sayName();

};

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

Mother::Mother()
{
}
void Mother::sayName() {
    cout << "What are you doing there?" << endl;

 }
Daughter.h
#ifndef DAUGHTER_H
#define DAUGHTER_H

class Daughter:public Mother
{
public:
    Daughter();
};
#endif
Daughter.cpp
#include "stdafx.h"
#include<iostream>
#include"Daughter.h"
#include"Mother.h"
using namespace std;

Daughter::Daughter()
{
}

1 个答案:

答案 0 :(得分:1)

当一个类继承另一个类时,它必须在其标题中包含父类标题。在您的情况下,您必须在子标题的顶部添加#include "Mother.h"(不仅仅是在.cpp文件中)。另一个错误正在发生,因为第一个错误并且纠正它应该解决它。

当您编写继承语法class Daughter : public Mother时,由于多种原因,子类定义需要访问有关其父类的信息。其中之一是有关继承方法的信息,这导致了第二次错误。