2013-06-05 72 views
1

我有一個問題,我的代碼,錯誤的是:重載成員函數

1>c:\users\grother\documents\obiektowe\lab05_195975\lab05_195975\czlowiek.cpp(6): error C2511: 'czlowiek::czlowiek(void)' : overloaded member function not found in 'czlowiek' 
    1>c:\users\grother\documents\obiektowe\lab05_195975\lab05_195975\czlowiek.h(3) : see declaration of 'czlowiek' 

這是czlowiek.h

class czlowiek  
{ 
    private: 

    public: 
     int wiek, pola, r; 
     char plec, *p, imie[15], nazwisko[25]; 
     static int n; 
     string ulubioneKsiazki; 

     //czlowiek(); 
     virtual ~czlowiek(); 
     czlowiek(const string& ulubioneKsiazki="Brak informacji") 
     { 
      this->ulubioneKsiazki=ulubioneKsiazki; 
     }; 
}; 

,這是czlowiek.cpp

#include "stdafx.h" 
#include "czlowiek.h" 

int czlowiek::n=0; 

czlowiek::czlowiek():p(0) 
{ 
    n++; 
} 

czlowiek::~czlowiek() 
{ 
    n--; 
} 

我我試圖改變構造函數,但我不知道如何使這個工作。 感謝提前:)

+0

你在課堂上宣稱'czlowiek()'在哪裏? –

回答

2

您需要從.cpp文件中刪除默認的構造函數的定義,因爲你有一個參數的構造函數有默認參數:

czlowiek(const string& ulubioneKsiazki="Brak informacji") 
{ 
    this->ulubioneKsiazki=ulubioneKsiazki; 
}; 

這作爲一個默認的構造函數,因爲它可以在沒有參數的情況下被調用。

另一種替代方法是刪除單個參數構造函數中的默認參數,併爲默認構造函數添加一個聲明。例如:

czlowiek() : ulubioneKsiazki="Brak informacji" {} 
czlowiek(const string& ulubioneKsiazki) : ulubioneKsiazki(ulubioneKsiazki) {} 

請記住,您的類有相當多的其他數據成員應該可能被初始化。

+0

然後我得到這個錯誤: 「czlowiek」:多個默認構造函數指定 這就是爲什麼它被註釋掉:( –

+0

@KamilDajerling對不起,我的回答是完全錯誤的更新。 – juanchopanza