2016-03-24 12 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

有兩個主要的問題與您的代碼:

  1. inputage方法需要一個整數,但你不帶任何參數調用它。要修復它,只需將age1作爲一個局部變量而不是一個參數(沒有理由將它作爲參數)。

  2. 您的ashish3類繼承ashishashish2。通過從ashish2繼承,它也從ashish繼承一次,因爲ashish2本身繼承自ashish,導致從ashish繼承兩次。因此,所有ashish的成員都存在於ashish3兩次,導致前三個模糊性錯誤。爲了避開它,只從ashish2class ashish3 : public ashish2)繼承ashish3

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標籤。

相關問題