Jaki konstruktor?

0
 
#include <stdio.h>
#include <iostream>


using namespace std;

class A{
public:
	A(int x)
	{
		y=x;
	}
protected:
	int y;
};

class B:public A
{
public:
	B(int x)
	{
		y=x;
	}
};

Tutaj poprawilem to co umialem w tym kodzie wyzej, tylko jeszcze wyrzuca mi blad dla konstruktora w klasie B, moglby ktos wytlumaczyc jak powinno byc poprawnie?

class A{
public:
	A()
	{}
protected:
	virtual void B() =0;
};

class B:public A
{
public:
	B(A y)
	{
		x=y;
	}
private:
	A x;
};
 

Oraz tutaj rozumiem komunikat ze nie dziala, poniewaz mowi ze klasa A jest czysto wirtualna. Jak powinno byc poprawnie zeby te klasy sie nie gryzly?

Prosze o pomoc w jednym jak i w drugim kodzie.

1

Gdyby powiedziałeś że poprawiłeś poniższy kod na powyższy wtedy by zrozumiałem, a tak nie rozumiem.
Nie poprawiłeś zaś zepsułeś, był prawie poprawny, brakowało albo domyślnego konstruktora w klasie A albo wywołania istniejącego w konstruktorze B. Zakładam że to drugie oczywiście zamiast x=y;

0

Ale ja poprawilem OBA kody. To sa dwa rozne kody w ktorych nie rozumiem dlaczego nie dziala w 1 ten konstruktor a w drugim ta klasa abstrakcyjna.

PS. To sa 2 rozne kody

0

Może pokaż z czego poprawiałeś.

0

To jest krotkie zadanie od mojego cwiczeniowca. Mam dane tylko to co widac wyzej.

Dodalem konstruktor domyslny do tego zadania pierwszego (na samym poczatku) i wyskakuja jakies krytyczne bledy kompilacji.

0
help napisał(a):

Tutaj poprawilem to co umialem w tym kodzie wyzej ...
To poprawiłeś czy nie?

0

no kod podstawowy byl bez srednikow na koncu klas. Dodalem ten konstruktor domyslny co powiedziales i nadal sie nie kompiluje poprawnie. Tyle zrobilem na razie

0

Więc nie poprawnie dodałeś.

0

To jak powinno byc poprawnie?

0
 
#include <stdio.h>
#include <iostream>


using namespace std;

class A{
public:
	A(int x)
	{
		y=x;
	}
protected:
	int y;
};

class B:public A
{
public:
	B(int x) : A(x)
	{
	}
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1