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.