P
pallav
I have to header files, circuit.h and latch.h that reference each
other and are causing a cyclic dependency.
latch.h file
#include "circuit.h"
typedef boost::shared_ptr<struct Latch> LatchPtr;
class Latch
{
...
CircuitPtr circuit;
};
circuit.h file
#include "latch.h"
typedef boost::shared_ptr<struct Circuit> CircuitPtr;
class Circuit
{
...
list<LatchPtr> latches;
};
As you can see there is a cyclic dependency. To get things to compile,
what I've done is
I've changed the circuit.h file as follows:
new circuit.h file
// defined in latch.h, can't do #include "latch.h" as that will
introduce cyclic dependency
extern typedef boost::shared_ptr<struct Latch> LatchPtr;
typedef boost::shared_ptr<struct Circuit> CircuitPtr;
class Circuit
{
...
list<LatchPtr> latches;
};
This solves the problem, but I'm wondering if this is the way to fix
such issues. I know C++ has forward declarations but I"m still trying
to figure out how to use them and if they'll solve this. The other
option is to combine the two header files but I would prefer not to do
that.
Is the above fix bad practice? thanks for your time.
other and are causing a cyclic dependency.
latch.h file
#include "circuit.h"
typedef boost::shared_ptr<struct Latch> LatchPtr;
class Latch
{
...
CircuitPtr circuit;
};
circuit.h file
#include "latch.h"
typedef boost::shared_ptr<struct Circuit> CircuitPtr;
class Circuit
{
...
list<LatchPtr> latches;
};
As you can see there is a cyclic dependency. To get things to compile,
what I've done is
I've changed the circuit.h file as follows:
new circuit.h file
// defined in latch.h, can't do #include "latch.h" as that will
introduce cyclic dependency
extern typedef boost::shared_ptr<struct Latch> LatchPtr;
typedef boost::shared_ptr<struct Circuit> CircuitPtr;
class Circuit
{
...
list<LatchPtr> latches;
};
This solves the problem, but I'm wondering if this is the way to fix
such issues. I know C++ has forward declarations but I"m still trying
to figure out how to use them and if they'll solve this. The other
option is to combine the two header files but I would prefer not to do
that.
Is the above fix bad practice? thanks for your time.