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

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

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

#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;
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:

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.

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.

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