Possible Duplicate:
Forward declaration of nested types/classes in C++
For simple cross-references of classes it is feasable to predeclare the classnames and use it as reference. In this way the representation is a pointer. But in case I want to cross-reference a nested class of both (look at the example below), I will run into trouble, because there seems to be no way to predeclare a nested class.
So my question is: Is there a way to predeclare nested classes so that my example could work?
If not: Is there a common workaround for that, that doesn't uglyfy the code too much?
// Need to predeclare it to use it inside 'First'
class Second;
class Second::Nested; // Wrong
// Definition for my 'First' class
class First
{
public:
Second::Nested* sested; // I need to use the nested class of the 'Second' class.
// Therefore I need to predeclare the nested class.
class Nested { };
};
// Definition for my 'Second' class
class Second
{
public:
First::Nested* fested; // I need to use the nested class of the 'First' class.
// This is okay.
class Nested { };
};
In short, the answer is no.
But you should have looked first for a similar question...
EDIT: a possible workaround might be wrapping both classes in another class, and forward delcaring the nested classes inside the wrapper.
class Wrapper
{
public:
// Forward declarations
class FirstNested;
class SecondNested;
// First class
class First
{
public:
SecondNested* sested;
};
// Second class
class Second
{
public:
FirstNested* fested;
};
};
This way you'll have to implement Wrapper::A
and Wrapper::B
while still isolating them from whatever namespace you're imlpementing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With