Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] error C2027: use of undefined type 'A' (zaprzyjaźnione klasy A i B)

Ostatnio zmodyfikowano 2014-04-14 15:06
Autor Wiadomość
stryku
Temat założony przez niniejszego użytkownika
[C++] error C2027: use of undefined type 'A' (zaprzyjaźnione klasy A i B)
» 2014-03-22 03:06:27
Witam. Mam takie oto klasy:

plik A.h
C/C++
#ifndef A_H
#define A_H

#include "struktury.h"
#include "B.h"


class A
{
private:
    int liczba;
    B * b;
   
    friend class B;
   
public:
   
    void funkcja()
    {
        //cos robie
    }
   
    void funkcja_2()
    {
        b->funkcja_b( this );
    }
};

#endif

plik B.h
C/C++
#ifndef B_h
#define B_h

#include "struktury.h"
#include "A.h"
#include <vector>

class A;

class B
{
private:
    /*...*/
   
   
public:
    /*..*/
    void funkcja_b( A * a )
    {
        a->funkcja();
        int liczba = a->liczba;
       
    }
};


#endif


I mam problem poniewarz kompilator daje błędy typu:
1> error C2027: use of undefined type 'A'
przy :
a->funkcja();

Nie wiem jak to obejść, więc proszę Was o pomoc :)
P-106973
DejaVu
» 2014-03-22 14:54:48
Musisz po pierwsze rozdzielić deklarację od implementacji, a po drugie: w plikach *.cpp zrobić include klasy, której implementację potrzebujesz. No i po trzecie: należy  użyć forward declaration w plikach nagłówkowych (to akurat masz). Niemniej jednak takie zależności zazwyczaj oznaczają źle zaprojektowany kod.
P-106984
stryku
Temat założony przez niniejszego użytkownika
» 2014-04-14 15:06:15
Dzięki bardzo, pomogłeś :)
P-108149
« 1 »
  Strona 1 z 1