Jak powinno dołączać się nagłówki klas?

0

Dołączałem sobie includem, ale chyba się coś zapętliły, bo wywala mi błąd w klasie której wcale nie ruszałem. Coś czytałem, że trzeba użyć ifndef i define
Mam plik pochodna.h i tam jest z automatu napisane

#ifndef POCHODNA_H
#define POCHODNA_H

...
#endif

Jak dodałem include "bazowa.h"; to działało dopóki nie zacząłem używać tych klas które powodują kilkukrotne dołączenie tego samego nagłówka. Jak dopisałem w klasie pochodna

#ifndef BAZOWA_H #define BAZOWA_H

to kompilator wywala błędy takie jakby klasy bazowej nie było. Szukałem przykładów z tym ifndef, ale nie znalazłem, żeby było kilka klas w jednym pliku dołączone, a w klasie pochodna mam też zmienne typu JakasKlasa i nagłówek tej klasy też muszę dołączyć.

0

Ech kod powinno sie rozumieć a nie wklejać na pałe...
Cały nagłówek powinieneś otoczyć przez "strażnika nagłówka" czyli to co podałeś wcześniej. Nie zapominaj też o endif na końcu... Poza tym pamiętaj że cały (!) kod ma tam być.

0
 
#ifndef POCHODNA_H
#include <bazowa.h>
#include <QString>
define POCHODNA_H

W sposób nie działa i dostaje nowe błędy, typu JakasKlasa does not name a type.

0

Normalnie miałem tak:
pochodna.h

 
#ifndef POCHODNA_H
#define POCHODNA_H
#include <jakasklasa.h>
#include <bazowa.h>

class Pochodna : public Bazowa
{
public:
    Pochodna();
protected:
    Jakasklasa b;
};

#endif // POCHODNA_H

Nagłówek każdej klasy jest w ten sposób zrobiony, a mi wywala błąd
Komunikaty bez znaczka błędu:

In file included from ..\Program1/klasa1.h:3:0,
from ..\Program1/klasa2.h:4,
from ..\Program1\bazowa.h:4,
from ..\Program1\bazowa.cpp:1:

i błąd:
błąd:expected class-name before '{' token (linijka z nawiasem klamrowym "{")

Nie rozumiem "cały"

Proszę, niech ktoś wytłumaczy jak Krystian w etrapezie. Szukałem tego co to ifndef i nie znalazłem takiego przykładu żeby było dołączane kilka klas.

To może dobrze tylko błąd może być czymś innym spowodowany?

Miałem funkcje klasa1::costam() w innej klasie i przez to coś było nie tak, wywaliłem, zrobiłem inaczej i już działa.

0

Wg mnie po deklaracji jakieś klasy zapomniałeś dać średnika.

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