Błąd "'Rat' does not name a type" - jak go poprawić?

0

Mam problem jak w temacie :

Rat.h

#ifndef RAT_H
#define RAT_H
#include "Potwor.h"

class Rat:public Potwor
{
    public:
    Rat(std::string = "Szczur", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Rat(); //destruktor

    void show();
    void respawn();
    int getScore() const;
    std::string getName() const;
};

#endif // RAT_H

Rat.cpp

#include <iostream>
#include <random>
#include <cstdlib>
#include "Postac.h"
#include "Rat.h"

using namespace std;

  random_device rd;   // generator liczb losowych (przynajmniej tak zrozumiałem z tłumaczenia) ;)
  mt19937 gen(rd());  // to seed mersenne twister. - do zasiania mersenne twister

  uniform_int_distribution<> wR(1,2); // zakres losowania pkt. wytrzymałości wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> sR(1,2); // zakres losowania pkt. siły wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zdrR(1,20); // zakres losowania pkt. zdrowia wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zrR(1,5); // zakres losowania pkt. zręczności wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> intelR(1,3); // zakres losowania pkt. inteligencji wyłącznie pomiędzy 1 a 2.

int s1=sR(gen);
int w1=wR(gen);
float zdr1=zdrR(gen);
int zr1=zrR(gen);
int intel1=intelR(gen);

int sila1,wytrzymalosc1,zrecznosc1,inteligencja1;
float zdrowie1;

void Rat::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Potwora"<<white<<":" << nazwa <<endl
         <<yellow<< "Sila" <<white<<":"<< sila + s1 << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc + w1<< endl
         <<red<<"Zdrowie"<<white<<":"<< zdrowie + zdr1 << endl
         <<green<<"Zrecznosc"<<white<<":"<< zrecznosc + zr1 << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja + intel1 << endl;

    np = nazwa;

//dodawanie wartości podstawowej do wylosowanej

    sila1=sila + s1;
    wytrzymalosc1=wytrzymalosc + w1;
    zdrowie1=zdrowie + zdr1;
    zrecznosc1=zrecznosc + zr1;
    inteligencja1=inteligencja + intel1;

    wynik = sila1 + wytrzymalosc1 + zrecznosc1 + inteligencja1 / zdrowie1;
}
 //koniec voida

Rat::Rat(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Rat::~Rat() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Rat::getScore() const //funkcja zwracająca wartość całkowitą czyli "int"
{
    return wynik;
}

string Rat::getName() const //funkcja zwracająca nazwe czyli "string"
{
    return nazwa;
}

Postac.h

#include <iostream>

class Postac : public Creature {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor

    void load();
    void show();
    void porownaj(const Rat& monster); //<- tu wskazuje błąd !
};

Postac.cpp


#include <iostream>
#include <cstdlib>
#include "Rat.h"
#include "Postac.h"
using namespace std;

void Postac::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Postaci"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile "<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc "<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia "<<white << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc "<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje "<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Postac::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Postaci"<<white<<":" << nazwa << endl
         <<yellow<<"Sila"<<white<<":" << sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":" << zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":" << zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() //destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Postac::porownaj(const Rat& monster)
{
    if (wynik1 > monster.getScore())

        cout << monster.getName() << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << monster.getName() << " Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}

Log:
/home/kamil/Dokumenty/Programy C++/Klasy/RPG/Postac.h|12|error: ‘Rat’ does not name a type|

2

Postac nie widzi deklaracji Rat. użyj forward-deklaracji:

class Rat;

class Postac : public Creature {
//...
4

ja bym zebral wszystkie te inty ktore przekazujesz do konstruktora i opakowal to w jakas klase, tak by Postac przyjmowala dwa (lub jeden) parametry, a nie 6
Grupowanie danych zeby mialy sens to jest dosc wazna umiejetnosc

nie musisz uzywac funkcji porownaj, mozesz przeladowac operator == przez co bedziesz robil na zasadzie

mojaPostac == mojPrzeciwnikRat

nie mieszaj angielskiego z polskim. Duzo lepiej jakbys pisal tylko po angielsku, ale jak nie potrafisz to trzymaj sie tlyko polskiego. Nie ma zadnego sensu mieszac dwoch jezykow

endl nie sluzy do nowej linii, od tego sluzy "\n"

Zamiast funkcji show mozesz przeciazyc operator <<

zamiast load mozesz przeciazyc operator >>, ale troche bez sensu ze Postac zamiast byc postacia zajmuje sie obsluga zdarzen z konsoli. Od tego powinnienes miec osobna klase i przypisac obiekt typu "Cechy" do postaci.

poczytaj o RuleOfThree

usun zmienne globalne

powtarzasz sie w show. poczytaj o Don't Repeat Yourself

0

Ok,w załączniku dałem ten projekt i tak wiem że nazwy mogą się różnić od nazw klas…
2016-11-01-141628_1280x1024_scrot.png

Postac.h

#include <iostream>

class Rat;
class Postac : public Creature {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor

    void load();
    void show();
    void porownaj(const Rat& monster);
};
Postac.cpp

///modyfikacje: Wprowadzenie LVLi oraz losowanie potwora z którym się zmierzymy
#include <iostream>
#include <cstdlib>
#include "Rat.h"
#include "Postac.h"
using namespace std;

void Postac::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Postaci"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile "<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc "<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia "<<white << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc "<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje "<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Postac::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Postaci"<<white<<":" << nazwa << endl
         <<yellow<<"Sila"<<white<<":" << sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":" << zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":" << zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() //destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Postac::porownaj(const Rat& monster)
{
    if (wynik1 > monster.getScore())

        cout << monster.getName() << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << monster.getName() << " Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}
Rat.h

#ifndef RAT_H
#define RAT_H
#include "Potwor.h"

class Rat:public Potwor
{
    public:
    Rat(std::string = "Szczur", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Rat(); //destruktor

    void show();
    void respawn();
    int getScore() const;
    std::string getName() const;
};

#endif // RAT_H
Rat.cpp

#include <iostream>
#include <random>
#include <cstdlib>
#include "Postac.h"
#include "Rat.h"

using namespace std;

  random_device rd;   // generator liczb losowych (przynajmniej tak zrozumiałem z tłumaczenia) ;)
  mt19937 gen(rd());  // to seed mersenne twister. - do zasiania mersenne twister

  uniform_int_distribution<> wR(1,2); // zakres losowania pkt. wytrzymałości wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> sR(1,2); // zakres losowania pkt. siły wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zdrR(1,20); // zakres losowania pkt. zdrowia wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zrR(1,5); // zakres losowania pkt. zręczności wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> intelR(1,3); // zakres losowania pkt. inteligencji wyłącznie pomiędzy 1 a 2.

int s1=sR(gen);
int w1=wR(gen);
float zdr1=zdrR(gen);
int zr1=zrR(gen);
int intel1=intelR(gen);

int sila1,wytrzymalosc1,zrecznosc1,inteligencja1;
float zdrowie1;

void Rat::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Potwora"<<white<<":" << nazwa <<endl
         <<yellow<< "Sila" <<white<<":"<< sila + s1 << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc + w1<< endl
         <<red<<"Zdrowie"<<white<<":"<< zdrowie + zdr1 << endl
         <<green<<"Zrecznosc"<<white<<":"<< zrecznosc + zr1 << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja + intel1 << endl;

    np = nazwa;

//dodawanie wartości podstawowej do wylosowanej

    sila1=sila + s1;
    wytrzymalosc1=wytrzymalosc + w1;
    zdrowie1=zdrowie + zdr1;
    zrecznosc1=zrecznosc + zr1;
    inteligencja1=inteligencja + intel1;

    wynik = sila1 + wytrzymalosc1 + zrecznosc1 + inteligencja1 / zdrowie1;
}
 //koniec voida

Rat::Rat(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Rat::~Rat() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Rat::getScore() const //funkcja zwracająca wartość całkowitą czyli "int"
{
    return wynik;
}

string Rat::getName() const //funkcja zwracająca nazwe czyli "string"
{
    return nazwa;
}
0

@up To co dalej? Bo już nie wiem sam…
EDIT: zmieniłem kod aby był zgodny z diagramem…

Błąd jaki mi pokazuje : /home/kamil/Dokumenty/Programy C++/Klasy/RPG/Character.h|4|error: expected class-name before ‘{’ token|

Character.h

#include <iostream>

class Rat;
class Character : public Creature {  ///<- tu pokazuje błąd

public:
    Character(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Character(); //destruktor

    void load();
    void show();
    void porownaj(const Rat& monster);
};
Character.cpp

///modyfikacje: Wprowadzenie LVLi oraz losowanie potwora z którym się zmierzymy
#include <iostream>
#include <cstdlib>
#include "Rat.h"
#include "Character.h"
using namespace std;

void Character::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Postaci"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile "<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc "<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia "<<white << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc "<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje "<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Character::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Postaci"<<white<<":" << nazwa << endl
         <<yellow<<"Sila"<<white<<":" << sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":" << zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":" << zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Character::Character(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Character
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Character::~Character() //destruktor klasy Character
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Character::porownaj(const Rat& monster)
{
    if (wynik1 > monster.getScore())

        cout << monster.getName() << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << monster.getName() << " Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}
Monster.h

#include <iostream>
#include "Creature.h"

class Monster : public Creature {
public:
    Monster(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Monster(); //destruktor

    void show();
    void respawn();

};
Monster.cpp

#include <iostream>
#include <cstdlib>
#include "Monster.h"
#include "Character.h"

using namespace std;

Monster::Monster(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Monster::~Monster() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}
Rat.h

#ifndef RAT_H
#define RAT_H
#include "Monster.h"

class Rat:public Monster
{
    public:
    Rat(std::string = "Szczur", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Rat(); //destruktor

    void show();
    void respawn();
    int getScore() const;
    std::string getName() const;
};

#endif // RAT_H
Rat.cpp

#include <iostream>
#include <random>
#include <cstdlib>
#include "Character.h"
#include "Rat.h"

using namespace std;

  random_device rd;   // generator liczb losowych (przynajmniej tak zrozumiałem z tłumaczenia) ;)
  mt19937 gen(rd());  // to seed mersenne twister. - do zasiania mersenne twister

  uniform_int_distribution<> wR(1,2); // zakres losowania pkt. wytrzymałości wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> sR(1,2); // zakres losowania pkt. siły wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zdrR(1,20); // zakres losowania pkt. zdrowia wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> zrR(1,5); // zakres losowania pkt. zręczności wyłącznie pomiędzy 1 a 2.
  uniform_int_distribution<> intelR(1,3); // zakres losowania pkt. inteligencji wyłącznie pomiędzy 1 a 2.

int s1=sR(gen);
int w1=wR(gen);
float zdr1=zdrR(gen);
int zr1=zrR(gen);
int intel1=intelR(gen);

int sila1,wytrzymalosc1,zrecznosc1,inteligencja1;
float zdrowie1;

void Rat::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Potwora"<<white<<":" << nazwa <<endl
         <<yellow<< "Sila" <<white<<":"<< sila + s1 << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc + w1<< endl
         <<red<<"Zdrowie"<<white<<":"<< zdrowie + zdr1 << endl
         <<green<<"Zrecznosc"<<white<<":"<< zrecznosc + zr1 << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja + intel1 << endl;

    np = nazwa;

//dodawanie wartości podstawowej do wylosowanej

    sila1=sila + s1;
    wytrzymalosc1=wytrzymalosc + w1;
    zdrowie1=zdrowie + zdr1;
    zrecznosc1=zrecznosc + zr1;
    inteligencja1=inteligencja + intel1;

    wynik = sila1 + wytrzymalosc1 + zrecznosc1 + inteligencja1 / zdrowie1;
}
 //koniec voida

Rat::Rat(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Rat::~Rat() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Rat::getScore() const //funkcja zwracająca wartość całkowitą czyli "int"
{
    return wynik;
}

string Rat::getName() const //funkcja zwracająca nazwe czyli "string"
{
    return nazwa;
}
Creature.h

class Creature //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    std::string nazwa, np, nP; //nazwa <-ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku
    const std::string white  = "\033[0m";
    const std::string red    = "\033[91m";
    const std::string green  = "\033[32m";
    const std::string yellow = "\033[93m";
    const std::string blue  = "\033[94m";
    const std::string purple = "\033[95m";
    const std::string Italic_cyan = "\033[3;96m";

public:
    virtual void show() = 0;
};
1
class Character : public Creature {  ///<- tu pokazuje błąd

Błąd jaki mi pokazuje :
/home/kamil/Dokumenty/Programy C++/Klasy/RPG/Character.h|4|error: expected class-name before ‘{’ token|

Tuż przed znakiem { jest Creature - wniosek: kompilator nie wie co to jest Creature choć spodziewa się tam jakiejś klasy.
Rozwiązanie:

#include "Creature.h"

Wydaje mi się że dostarczyłem odpowiednią ilość informacji aby ktoś był w stanie mi pomóc
Wrzuciłeś sam kod nie mówiąc czy się kompilują, co się z nimi dzieje itd. Chyba nie oczekujesz, że ktoś stworzy projekt u siebie, skopiuje te wszystkie pliki i skompiluje żeby zobaczyć co jest nie tak? Czasami ktoś tak robi, ale to wyjątek, nie reguła.

0

kod nie chcę się skompilować bo zatrzymuje się na pliku Character.h po dodaniu nagłówka Creature.h wyświetla mi błąd wskazujący na Class Creature w Pliku Creature.h o treści error: redefinition of ‘class Creature’ oraz error: previous definition of ‘class Creature’ wskazujący również tą samą linijke

Creature.h

//klasa z ktorej dziedzicza klasy Character i Monster !
class Creature //<- Tu wyświetla błąd
    {
protected:
    std::string nazwa, np, nP; //nazwa <-ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku
    const std::string white  = "\033[0m";
    const std::string red    = "\033[91m";
    const std::string green  = "\033[32m";
    const std::string yellow = "\033[93m";
    const std::string blue  = "\033[94m";
    const std::string purple = "\033[95m";
    const std::string Italic_cyan = "\033[3;96m";

public:
    virtual void show() = 0;
};
0

Dodaj w plikach .h dyrektywę #pragma once

0

W porządku zrobiłem to co napisał mi @Shakaz

I obecnie na tą chwilę mam taki błąd: undefined reference tovtable for Monster' `

Monster.cpp

 #include <iostream>
#include <cstdlib>
#include "Monster.h"
#include "Character.h"

using namespace std;

//konstruktor
Monster::Monster(string n, int s, int w, float zdr, int zr, int intel)  //<- Kompilator wskazuje na tą linijkę
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Monster::~Monster() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}
Monster.h

#pragma once
#include <iostream>
#include "Creature.h"

class Monster : public Creature {
public:
    Monster(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Monster(); //destruktor

    void show();
    void respawn();

};
1

Musisz mieć zaimplementowane wszystkie metody wirtualne, które nie są czysto wirtualne (virtual void foo() = 0).

Poza tym, próbowałeś wklepać w google ten błąd, czy od razu przyleciałeś tutaj z problemem? Naucz się korzystać z google, to Ci się przyda w przyszłości.

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