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

klasy c++ dziwny błąd

VPS Starter Arubacloud
0 głosów
275 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 361 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 307 wizyt
pytanie zadane 1 stycznia 2023 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 260 wizyt
pytanie zadane 18 listopada 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...