• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

klasy c++ dziwny błąd

Object Storage Arubacloud
0 głosów
290 wizyt
pytanie zadane 18 stycznia 2022 w C i C++ przez Fluxik Nowicjusz (240 p.)
#include <iostream>

using namespace std;

class B
{
protected:
	string* tekst;
public:
	B() : tekst(new string [2] {" "," "}) {}
	B(const string& a) : tekst(new string [2] {a,a}) {}
	B(const string& a1, const string& a2) : tekst(new string [2] {a1,a2}) {}

	virtual void txt1() const = 0;
	virtual void txt2() const = 0;

	friend ostream& operator << (ostream&, const B&);

	virtual void wypisz(ostream&) const = 0;
};

ostream& operator << (ostream& out, const B& a)
{
	return a.wypisz(out);
}


class P1 : public B
{
protected:
	B be;
public:
	P1(const string& a1, const string& a2) : be(a1,a2) {}

	void wypisz(ostream& out) const
	{
		return out << tekst[0] << ' ' << tekst[1];
	}

	void txt1() const
	{
		cout << be.tekst[0];
	}

	void txt2() const
	{
		cout << be.tekst[1];
	}
};

class P2 : public P1
{
	double liczba;
public:
	P2(const string& a1, const string& a2, int a3) : P1(a1,a2), liczba(a3) {}

	void wypisz(ostream& out) const
	{
		return out << tekst[0] << ' ' << tekst[1] << ' ' << liczba;
	}

	void txt1() const
	{
		cout << 's';
	}

	void txt2() const
	{
		cout << 'a';
	}
};


int main()
{
	const P1* wsk1 = new P1("coffee","bar");
	// const P2* wsk2 = new P2("white","coffe",1.50);
	// const P1* wsk3 = new P1("thank","you");
	// B ob1("-------------");
cout << *wsk1;
	// cout << wsk1->txt1(); << " " << wsk1->txt2() <<endl;
	// cout << wsk2->txt1() << " " << wsk2->txt2() <<" "
	// 	<< wsk2->w1() << endl;
	// cout << *wsk3 << endl;

	// P1 x = *wsk1; delete wsk1; wsk1=0;
	// P2 y = *wsk2; delete wsk2; wsk2=0;
	// P1 z = *wsk3; delete wsk3; wsk3=0;


	// tab1[0] = new B(ob1);
	// tab1[1] = new P2(y);
	// tab1[2] = new B(ob1);
	// tab1[3] = new B(ob1);

	// for(int i=0; i<4; ++i){
	// 	cout << *tab1[i];
	// 	delete tab1[i];

   
}

błąd: cannot declare field 'p1::be' to be of abstract type 'B'

Siedzę nad tym ze znajomymi już dłuższy czas i nie mamy pojęcia o co chodzi z tym błędem.

 

1 odpowiedź

0 głosów
odpowiedź 18 stycznia 2022 przez Szfierzak Gaduła (3,750 p.)
Nie można tworzyć obiektów klasy abstrakcyjnej, dlatego nie stworzycie obiektu klasy B. Poza tym skoro P1 dziedziczy po B i patrząc na przykład to pole klasy B w P1 nie jest potrzebne.
komentarz 18 stycznia 2022 przez Fluxik Nowicjusz (240 p.)
Pole klasy B w P1 jest narzucone odgórnie. To jest zadanie do szkoły i w jego treści jest napisane, że klasa P1 posiada jedno pole typu B.
komentarz 18 stycznia 2022 przez TOM_CPP Pasjonat (22,640 p.)
Jaka jest treść zadania? Klasa abstrakcyjna służy jako interfejs w dziedziczeniu i nie można tworzyć obiektów tego typu.

Podobne pytania

+1 głos
2 odpowiedzi 373 wizyt
pytanie zadane 10 października 2021 w C i C++ przez <młody_programista> Początkujący (450 p.)
0 głosów
2 odpowiedzi 339 wizyt
pytanie zadane 1 stycznia 2023 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 275 wizyt
pytanie zadane 18 listopada 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...