2017-08-16 21 views
1

このチュートリアル(https://www.youtube.com/watch?v=gq2Igdc-OSI&index=52&list=PLAE85DE8440AA6B83)に続いて、私はVisual Studio C++ 2017で4つのエラーが発生しました。それらのうち3つは同じもので、mother 'を繰り返します:基本クラスはdaughter.hファイルで未定義です。もう1つのエラーが表示されます: 'sayName'は 'Daughter'のメンバーではありません。ここにコードがあります。私がプログラムで印刷したいものはかなりシンプルです...「あなたは何をしていますか?」という2つの行を印刷したいと思います。あなたがこの答えで私を助けることができれば、それは素晴らしいでしょう。ありがとうございました。メインファイル `の#include "stdafx.hを" の#include の#include "Daughter.h" の#include "Mother.h" 名前空間stdを使用するための 。基本クラスは未定義です。エラーC2504

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() 
{ 
} 
+0

'#include" Mother.h "をDaughter.hに移動します。 – GAVD

答えて

0

クラスが別のクラスを継承する場合、クラスにはそのクラスのヘッダーに親クラスのヘッダーが含まれている必要があります。あなたのケースでは、娘ヘッダ(.cppファイルだけでなく)の上部に#include "Mother.h"を追加する必要があります。最初のエラーのためにもう一方のエラーが発生しており、修正する必要があります。

継承構文class Daughter : public Motherを記述するとき、Daughterクラス定義はいくつかの理由でその親クラスに関する情報にアクセスする必要があります。そのうちの1つは継承されたメソッドに関する情報で、これは第2のエラーを引き起こしていました。

+0

私の問題解決のお手伝いをしていただきありがとうございます。これはすべてのVisual Studioプロジェクト用ですか?私が見たチュートリアル(https://www.youtube.com/watch?v=gq2Igdc-OSI&index=52&list=PLAE85DE8440AA6B83)がそれをしなかったので、私はこれを尋ねます。 –

+0

@DarkChocolate私はそれをチェックしましたが、この問題についてのコメントもあります。さらに、これは、(Visual Studioになくても)書き込むすべてのC++コードに適用されます。 –

+1

もう一度、私の問題解決を手伝ってくれてありがとう。 –

関連する問題