2013-06-05 70 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