problem z includami

0

mam program z ok 10 klasami
kazda klasa jest na 2 osobnych plikach .h .cpp

wprowadzam powiazania miedzy tymi klasami przez includy

gdy juz jest duzo powiazan to w pewnym momencie jakies dziwne blady wyskakuja

c:\pulpit\po\szkola tanca\plan_piotrek\grupa.h(7) : warning C4182: #include nesting level is 363 deep; possible infinite recursion

pomocy!!!!!!!

0

jeżeli w pliku x dołączasz plik y, a w pliku y plik x to czemu się dziwić ?

[<font color="green">dopisane</span>]
dobra rada: rozrysuj sobie to na kartce - lepiej widać problem; często użycie extern pomaga !

0

ale wlasnei o to chodzi ze musze tak wywolac gdyz jedna klasa wykorzystuje druga
i na odwrot

0

mozesz zastosowac w plikach naglowkowych:

#ifndef jakasnazwaniepowtazalna
#define jakasnazwaniepowtazalna

kod...

#endif

0

A wystarczyłoby przejrzeć jakikolwiek plik nagłówkowy.
Tu masz przykład stdlib.h :

#ifndef __STDLIB_H
#define __STDLIB_H

#if !defined(___DEFS_H)
#include <_defs.h>
#endif

#ifndef NULL
#include <_null.h>
#endif

//...

#endif  /* __STDLIB_H */
0

jest na to pare sposobow.

  1. zawesze w pliku .h deklaruj sekcje #ifndef, ect tak jak powiedzial flabra.

  2. dodatkowo jesli potrzebujesz to mozesz uzyc dlekaracji zapowiadajacej czyli:

(...)
class NazwaMojejKlasy;

class InnaKlasa
{
(...)
};

  1. Ale jesli bedziesz potrzebowal uzyc jakiesj metody to deklaracja zapowiadjaca sie sypnie. Wtedy robisz deklaracje zapowiadajaca w pliku .h a includujesz dany naglowek w pliku .cpp. Tylko nie rob tego nagminie poniewz to brzydki nawyk :)

Pozdrawiam
Assassin

0

a wiec jak np w Visualu utworze nowa klase("jakas")
to w pliku jakas.h mam:

// jakas.h: interface for the jakas class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_JAKAS_H__FFE6FDEC_90D2_48D7_93C5_5B49E9020DBC__INCLUDED_)
#define AFX_JAKAS_H__FFE6FDEC_90D2_48D7_93C5_5B49E9020DBC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class jakas  
{
public:
	jakas();
	virtual ~jakas();

};

#endif // !defined(AFX_JAKAS_H__FFE6FDEC_90D2_48D7_93C5_5B49E9020DBC__INCLUDED_)

i teraz w ktorym miejscu mam wstawiac includy zeby wszystko bylo okej

0

pawelkuM: Przeczytaj jeszcze raz to co napisał Assassin :-P Szczególnie punkt 2 i nie includuj krzyżowo nagłówków w nagłówkach... wystarczy class Klasa,a include w pliku .cpp (w większości wypadków :>)

0

Z tego co pamietam w Visual Studio #pragma once mozna pisac zamiast ifndef itp bo to jest mechanizm zapewniajacy pojedyncze includy, ale to bylo dawno i mozliwe ze sie myle.

0

Ale jest nieprzenosne i poza Visualem nie bedzie dzialac.

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