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--;
}

コンストラクターを変更しようとしましたが、これを機能させる方法がわかりません。前もって感謝します :)

4

1 に答える 1

2

.cppデフォルト パラメーターを持つ単一のパラメーター コンストラクターがあるため、ファイルからデフォルト コンストラクターの定義を削除する必要があります。

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

これは、引数なしで呼び出すことができるため、デフォルトのコンストラクターとして機能します。

もう 1 つの方法は、単一パラメーター コンストラクターの既定のパラメーターを削除し、既定のコンストラクターの宣言を追加することです。例えば:

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

クラスには、おそらく初期化する必要がある他のデータメンバーがかなりあることに注意してください。

于 2013-06-05T22:14:06.377 に答える