2016-03-24 7 views
-2

エラーは以下のとおりです。「名前」にこのプログラムでエラーを修正する方法と、なぜそれを取得するのですか?

  • 参照は「年齢」に
  • あいまいな参照であるメンバー「INPUT1」の
  • あいまいな要求は」への呼び出しのため
  • あいまいな一致機能ではありませんashish3 :: inputage()」ここで

は私のコードです:

#include <iostream> 
#include <string> 

using namespace std; 

class ashish 
{ 
protected: 
    string name; 
public: 
    void input1(string name1) 
    { 
     cin >> name1; 
     name = name1; 
    } 

    int age; 
}; 

class ashish2 : public ashish 
{ 
public: 
    void inputage(int age1) 
    { 
     cin >> age1; 
     age = age1; 
    } 

    void display() 
    { 
     cout << name; 
    } 
}; 

class ashish3 : public ashish, public ashish2 
{ 
public: 
    void showme() 
    { 
     cout << "the name is" << name << endl << "the age is " << age << endl; 
    } 
}; 

int main() 
{ 
    ashish3 rocker; 
    rocker.input1(); 
    rocker.inputage(); 
    rocker.display(); 
    rocker.showme(); 
    return 0; 
} 
+0

Hello Worldを試しましたか? –

+0

このコードですべてが間違っています – DimChtz

+1

エラーメッセージは実際に説明します。 – Peter

答えて

1

あなたのコードを持つ2つの大きな問題があります。

  1. があなたのinputage方法は整数を期待していますが、パラメータなしでそれを呼び出します。これを修正するには、パラメータの代わりにage1をローカル変数にします(パラメータにする必要はありません)。

  2. ashish3クラスはashishashish2の両方を継承します。 ashish2から継承すると、自体がashishから継承され、ashishを2回継承するので、もう一度ashishから継承します。したがって、ashishのメンバーはすべてashish3に2回存在し、最初の3つのあいまいなエラーが発生します。それを回避するには、ashish3ashish2class ashish3 : public ashish2)から継承するだけです。

0
#include <iostream> 
#include <string> 
using namespace std; 

class ashish 
{ 
protected: 
    string name; 
public: 
    void input1(string name1) { 
     cin >> name1; 
     name = name1; 
    } 
    int age; 
}; 
class ashish2 :public ashish 
{ 
public: 
    void inputage(int age1) { 
     cin >> age1; 
     age = age1; 
    } 
    void display() 
    { 
     cout << name; 
    } 
}; 
class ashish3 : public ashish2 
{ 
public: 
    void showme() 
    { 
     cout << "the name is" << name << endl << "the age is " << age << endl; 
    } 
}; 
int main() 
{ 
    ashish3 rocker; 
    rocker.input1("xasdas"); 
    rocker.inputage(123); 
    rocker.display(); 
    rocker.showme(); 
    return 0; 
} 

あなたはいくつかのエラーを持って、あなたはパラメータで関数を呼び出していませんでした。追加する必要がある<string>ヘッダーを追加していません。そして、あなたはashish3にashish1とashish2の両方から継承させるべきではありません。なぜなら、ashish2はすべての関数と変数をashishクラスとして継承しているからです。 C++はCとは異なる言語ですが、Cタグを削除してください。

関連する問題