W pliku nagłówkowym klasy "A" chcę utworzyć objekt klasy "B" w funkcji inline.
Plik nagłówkowy klasy B dołączam w pliku nagłówkowym klasy A.
Dlaczego:
Wyskakuje mi błąd, że nie "nie widzi odpowiedniej nazwy" (konstruktor klasy B)?
Jak to obejść?
W pliku nagłówkowym klasy "A" chcę utworzyć objekt klasy "B" w funkcji inline.
Plik nagłówkowy klasy B dołączam w pliku nagłówkowym klasy A.
Dlaczego:
Wyskakuje mi błąd, że nie "nie widzi odpowiedniej nazwy" (konstruktor klasy B)?
Jak to obejść?
Pokaż te pliki nagłówkowe,bo wróżbitami nie jesteśmy.Mogę powiedzieć ze swojej strony tyle,że u mnie działa:
test1.h
#ifndef TEST1_H
#define TEST1_H
#include "test2.h"
class A
{
B *pointer;
public:
A(void)
{
pointer=new B;
}
};
#endif
test2.h
#ifndef TEST2_H
#define TEST2_H
class B
{
public:
B(void)
{}
};
#endif
i gdzieś w main:
A aa;
Po to są pliki nagłówkowe, żeby mieć informacje o metodach i polach danej klasy, a nie ich treści. Rozdziel nagłówki od kodu, includuj tylko nagłówki, w razie potrzeby zrób predeklarację klasy:
class A;
class B;
Przed deklaracją samej klasy, która używa innej klasy. Wtedy nagłówek będzie wiedział, że w programie jest taka klasa, której "później" poszuka (w pliku nagłówkowym nie potrzebuje dokładnego opisu jej pól i metod, jedynie informacji że taka w ogóle istnieje) , a w pliku .cpp dopiero odwołujesz się do konstruktora innej klasy.
Chyba wiem na czym polega błąd.
Używam w klasie A operatora zakresu
new B::B(), ponieważ w A mam metodę o takiej samej nazwie - B()
i zamiast objekt, chce mi stworzyć konstruktor...
Zmieniłem nazwy funkcji i działa.