Proste pytanie: Funkcje inline w plikach nagłówkowych.

Proste pytanie: Funkcje inline w plikach nagłówkowych.
M3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

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ść?

MasterBLB
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1454
0

Pokaż te pliki nagłówkowe,bo wróżbitami nie jesteśmy.Mogę powiedzieć ze swojej strony tyle,że u mnie działa:
test1.h

Kopiuj
#ifndef TEST1_H
#define TEST1_H
#include "test2.h"

class A
{
	B *pointer;

public:
	A(void)
	{
		pointer=new B;
	}
};
#endif

test2.h

Kopiuj
#ifndef TEST2_H
#define TEST2_H

class B
{
public:
	B(void)
	{}
};
#endif

i gdzieś w main:

Kopiuj
A aa;
R9
  • Rejestracja: dni
  • Ostatnio: dni
0

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:

Kopiuj
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.

M3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.