Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziedziczenie konstruktora, C++

Ostatnio zmodyfikowano 2009-07-29 08:58
Autor Wiadomość
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-28 21:27:06
Mógłbyś podać przykład, jak coś takiego napisać?
P-8860
DeBugger
» 2009-07-28 21:30:46
Ja napiszę:
C/C++
#include <iostream>
using namespace std;
class Bazowa
{
protected:
    int x; //zmienna chroniona
public:
    Bazowa( int _x );
    virtual ~Bazowa(); //destruktor musi być virtualny
};
class Pochodna
    : public Bazowa
{
public:
    int xret( void );
    Pochodna( int _x );
    virtual ~Pochodna(); //tutaj lepiej wstawić virtual
};
Bazowa::Bazowa( int _x )
    : x( _x )
{
}
Bazowa::~Bazowa()
{
}
int Pochodna::xret( void )
{
    return x;
}
Pochodna::Pochodna( int _x )
    : Bazowa( _x )
{
}
Pochodna::~Pochodna()
{
}
int main()
{
    Pochodna * foo = new Pochodna( 9 ); //"wydziedziczony" konstruktor - najpierw wywołuje się konstruktor klasy Pochodna, później Bazowa
    cout << foo->xret() << endl;
    delete foo;
}
P-8861
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-28 21:43:07
Spróbowałem coś takiego:
C/C++
cPlayer::cPlayer()
    : cCharacter( int iMaxHP, int iAttack, int iDefense, int iInjuryMin, int iInjuryMax )
    : cObject( string strName, int iPositionX, int iPositionY, string strPathOfFile )
{
}
logi:

1>d:\projekty\inne\diablo\class.cpp(62) : error C2084: function 'cPlayer::cPlayer(void)' already has a body
1>        d:\projekty\inne\diablo\class.hpp(43) : see previous definition of '{ctor}'
1>d:\projekty\inne\diablo\class.cpp(62) : error C2144: syntax error : 'int' should be preceded by ')'
1>d:\projekty\inne\diablo\class.cpp(62) : error C2612: trailing 'type' illegal in base/member initializer list
1>d:\projekty\inne\diablo\class.cpp(62) : error C2062: type 'int' unexpected
1>d:\projekty\inne\diablo\class.cpp(62) : error C2059: syntax error : ')'
1>d:\projekty\inne\diablo\class.cpp(62) : error C2143: syntax error : missing ';' before '{'
P-8862
DeBugger
» 2009-07-28 21:48:37
C/C++
cPlayer::cPlayer( int iMaxHP, int iAttack, int iDefense, int iInjuryMin, int iInjuryMax, string strName, int iPositionX, int iPositionY, string strPathOfFile )
    : cCharacter( iMaxHP, iAttack, iDefense, iInjuryMin, iInjuryMax )
    : cObject( strName, iPositionX, iPositionY, strPathOfFile )
{
}
P-8863
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-28 22:13:42
Skopiowałem tą długą linijkę i mam błędy:

1>d:\projekty\inne\diablo\class.cpp(64) : error C2612: trailing ':' illegal in base/member initializer list
1>d:\projekty\inne\diablo\class.cpp(64) : error C2143: syntax error : missing ';' before ':'
1>d:\projekty\inne\diablo\class.cpp(64) : error C2143: syntax error : missing ';' before '{'
P-8866
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-28 22:32:09
Więc nie da się użyć tu parametrów z klasy głównej? (cObject)
P-8869
steckel
Temat założony przez niniejszego użytkownika
» 2009-07-28 22:40:47
Jak to nie?

cObject(string strName, int iPositionX, int iPositionY, string strPathOfFile)
P-8872
DejaVu
» 2009-07-28 22:46:06
Fanael to taki bot -> nie domyśla się, że mówiąc parametr masz na myśli argument :)
P-8874
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona