DaysShadow
Admiral
- Registriert
- Jan. 2009
- Beiträge
- 9.235
Hi,
ich habe zwei Klassen die sich gegenseitig kennen und jeweils Member von der anderen Klasse haben.
Irgendwas mache ich aber offensichtlich falsch, denn ich bekomme folgende Fehlermeldungen:
Zu folgendem Code:
Klasse A:
Klasse B:
Das ist Problem ist scheinbar, dass B im Header von A nicht bekannt ist, obwohl ich es ja inkludiere.
Wo liegt da der Fehler?
Und ist der typedef in den jeweiligen Klassen legitim?
Hatte die beiden typedefs erst im namespace liegen, aber da gab es die selben Fehler, verständlich, da er ja von mir mit der Umschreibung nicht behoben wurde...
Es bringt mich immer wieder zum verzweifeln...^^
Danke an alle Helfer!
ich habe zwei Klassen die sich gegenseitig kennen und jeweils Member von der anderen Klasse haben.
Irgendwas mache ich aber offensichtlich falsch, denn ich bekomme folgende Fehlermeldungen:
Code:
In file included from include/B.hpp:14:0,
from src/B.cpp:1:
include/A.hpp:23:17: error: 'B' in namespace 'abc::xyz' does not name a type
include/A.hpp:28:30: error: 'abc::xyz::B' has not been declared
include/A.hpp:28:37: error: expected ')' before 'ptrToB'
Zu folgendem Code:
Klasse A:
Code:
#ifndef A_HPP
#define A_HPP
#include <tr1/memory>
#include "B.hpp"
namespace abc
{
namespace xyz
{
class A
{
private:
abc::xyz::B::Ptr ptrToB_;
public:
A();
A( abc::xyz::B::Ptr ptrToB );
~A();
typedef std::tr1::shared_ptr< A > Ptr;
};
}
}
#endif /* A_HPP */
Klasse B:
Code:
#ifndef B_HPP
#define B_HPP
#include <vector>
#include <tr1/memory>
#include "A.hpp"
namespace abc
{
namespace xyz
{
class B
{
private:
std::vector< abc::xyz::A::Ptr > aPtrs;
public:
B( );
~B( );
typedef std::tr1::shared_ptr< B > Ptr;
};
}
}
#endif /* B_HPP */
Das ist Problem ist scheinbar, dass B im Header von A nicht bekannt ist, obwohl ich es ja inkludiere.
Wo liegt da der Fehler?
Und ist der typedef in den jeweiligen Klassen legitim?
Hatte die beiden typedefs erst im namespace liegen, aber da gab es die selben Fehler, verständlich, da er ja von mir mit der Umschreibung nicht behoben wurde...
Es bringt mich immer wieder zum verzweifeln...^^
Danke an alle Helfer!