Uzupełnij Klasy K1, K2, K3 oraz W tak aby program można było poprawnie zbudować i wykonać Dane są klasy Pkt1, Pkt2, Pkt3 jak niżej (oraz klasa K, której istnienie wynika z treści funkcji main() ): class Pkt1{

class Pkt2{

//...

//..

public:

private:

Pkt1(){ cout << "Dziala konstruktor klasy K1" << endl; }

Pkt2(){ cout << "Dziala konstruktor klasy Pkt2" << endl; }

private:

public:

~Pkt1(){cout << "Dziala destruktor klasy K1" << endl; }

~Pkt2(){cout << "Dziala destruktor klasy Pkt2" << endl; }

private:

public:

void showMe(){ cout << "Jestem Punktem1" << endl; }

void showMe(){ cout << "Jestem Punktem2" << endl; }

public:

public:

// ....

// ....

};

};

class Pkt3{

void* W::stworzPunkt(unsigned int uItem){

private:

switch( uItem ){

Pkt3(){cout << "Dziala konstruktor klasy Pkt3" << endl; }

case 0: return (void*)(new Pkt1());

~Pkt3(){ cout << "Dziala destruktor klasy Pkt3" << endl; }

private:

case 1: return (void*)(new Pkt2()); void showMe(){ cout << "Jestem Punktem3" << endl; }

case 2: return (void*)(new Pkt3()); public:

};

// ....

return 0;

};

};

Oraz dana jest funkcja main( ): int main(){

Pkt1* sPkt1 = (Pkt1*)( W::funkcjaStworz_Pkt(0) ); Pkt2* sPkt2 = (Pkt2*)( W::funkcjaStworz_Pkt(1) ); Pkt3* sPkt3 = (Pkt3*)( W::funkcjaStworz_Pkt(2) ); W::kasujObiekt( sPkt1 ); W::kasujObiekt( sPkt2 ); W::kasujObiekt( sPkt3 ); Pkt1* pP1 = ::funkcjaStworz_Pkt1(); Pkt2* pP2 = ::funkcjaStworz_Pkt2(); Pkt3* pP3 = ::funkcjaStworz_Pkt3(); W::wywolajDlaPunktuFunkcjeShowMe( pP1 ); W::wywolajDlaPunktuFunkcjeShowMe( pP2 ); W::wywolajDlaPunktuFunkcjeShowMe( pP3 );

::kasujObiekt( pP1 );

::kasujObiekt( pP2 );

::kasujObiekt( pP3 ); return 0;

}