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

Dziedziczenie, problem z kompilacją programu (C++)

Object Storage Arubacloud
0 głosów
168 wizyt
pytanie zadane 17 listopada 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Witam testowałem pierwszy program posiadający w sobie dziedziczenie. Pojawiły się nietypowe błędy, których nie mogę znaleźć, mianowicie:

#include "dd.h"

// metody klasy bazowej
firstLesson::firstLesson(const std::string & fn, int age, bool acc) : name(fn), age(age), access(acc) { }
void firstLesson::Name() const { std::cout << name << ", w wieku " << age << std::endl; }

//metody klasy pochodnej
secondLesson::secondLesson(int r, const std::string & name, int ag, bool v) : firstLesson(name, ag, v)
{
	rating = r;
}

secondLesson::secondLesson(int value, const firstLesson & ob) : firstLesson(ob), rating(value) { }
cpp(4): error C2533: "firstLesson::{ctor}": konstruktorom niedozwolony typ zwracany
cpp(9): error C2264: "firstLesson::firstLesson": błąd w definicji funkcji lub deklaracji; nie wywołano funkcji

plik nr 2 (main):

#include "dd.h"
#include <cstdlib>

int main()
{
	firstLesson player1("Kowalski", 23, true); // 
	secondLesson rated_player(2014, "Markowski", 25, false);

	rated_player.Name(); // korzystanie z obiektu klasy pochodniej z metody klasy bazowej
	if (rated_player.Check_access())
		std::cout << ": posiada przepustkę.\n";
	else 
		std::cout << ": nie posiada przepustki.\n";

	player1.Name(); // obiekt klasy bazowej korzysta z metody klasy bazowej
	if(player1.Check_access())
		std::cout << ": posiada przepustkę.\n";
	else
	std::cout << ": nie posiada przepustki.\n";

	// ranking
	player1.Name();
	//std::cout << "; Ranking: " << player1.Rating() << std::endl;

	rated_player.Name();
	std::cout << "; Ranking: " << rated_player.Rating() << std::endl;

	system("pause");
	return 0;
}	
cpp(4): error C2628: "secondLesson" poprzedzający "int" jest niedozwolony (zapomnialeś ";"?)
cpp(5): error C3874: zwracany typ "main" powinien być "int" zamiast "secondLesson"

Oto deklaracja klas:

#ifndef DD_H_
#define DD_H_

#include <string>
#include <iostream>
class firstLesson
{
private:
	std::string name;
	int age;
	bool access;
public:
	firstLesson(const std::string & nm = "brak nazwy", int va = 0, bool v = false);
	void Name() const;
	bool Check_access() const { return access; }
	void Reset_access(bool v) {	access = v;	}
};


class secondLesson : public firstLesson
{
private:
	int rating;
public:
	secondLesson(int r =0, const std::string & nm = "brak nazwy", int pp = 0, bool ac = false);
	secondLesson(int, const firstLesson &);
	int Rating() const { return rating; }
	void Reset_rating(int r) { rating = r; }
}
#endif

Proszę o podpowiedź dotycząca znaczenia błędów.

1 odpowiedź

+1 głos
odpowiedź 17 listopada 2018 przez criss Mędrzec (172,590 p.)
wybrane 17 listopada 2018 przez Sic
 
Najlepsza

cpp(4): error C2628: "secondLesson" poprzedzający "int" jest niedozwolony (zapomnialeś ";"?)

To wynika z braku średnika po definicji  klasy secondLesson. Czyli dokładnie to co masz napisane w zasadzie.
Jestem prawie pewien, że wszystkie pozostałe blędy wynikają z tego samego.

 

komentarz 17 listopada 2018 przez Sic Dyskutant (8,510 p.)
Dzięki.

A jeszcze jedno pytanie czy tworząc obiekt klasy bazowej mogę odwołać się w jakiś sposób do metody klasy pochodnej ?
komentarz 17 listopada 2018 przez criss Mędrzec (172,590 p.)
Przecież obiekt klasy pochodnej wtedy nie istnieje, nie masz się do czego odwoływać.
komentarz 17 listopada 2018 przez Sic Dyskutant (8,510 p.)
Chciałem się tylko upewnić.

Podobne pytania

0 głosów
1 odpowiedź 678 wizyt
0 głosów
1 odpowiedź 501 wizyt
0 głosów
1 odpowiedź 193 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...