我的代码有问题,错误是:
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 :(得分:2)
您需要从.cpp
文件中删除默认构造函数的定义,因为您有一个带有默认参数的参数构造函数:
czlowiek(const string& ulubioneKsiazki="Brak informacji")
{
this->ulubioneKsiazki=ulubioneKsiazki;
};
这可以作为默认构造函数,因为它可以在没有参数的情况下调用。
另一种方法是删除单个参数构造函数中的default参数,并为默认构造函数添加一个声明。例如:
czlowiek() : ulubioneKsiazki="Brak informacji" {}
czlowiek(const string& ulubioneKsiazki) : ulubioneKsiazki(ulubioneKsiazki) {}
请记住,您的班级中有很多其他数据成员可能应该初始化。