I am not new to C++ but I still can't figure the syntax out, the problem is that it's a class in another class. I only found answers for normal forward declaration. Please don't take my code perfection too seriously here.
I tried following but nothing worked:
class MyClass {
public:
class InnerClass
{
public:
void boo()
{
foo(*this); // error: foo() is not known
}
};
};
void foo(MyClass::InnerClass& ref)
{
}
or
class MyClass;
class MyClass::InnerClass; // error: incomplete type is not allowed
void foo(MyClass::InnerClass& ref)
{
}
class MyClass
{
public:
class InnerClass
{
public:
void boo()
{
foo(*this);
}
};
};
or
class MyClass
{
public:
class InnerClass;
};
void foo(MyClass::InnerClass& ref)
{
}
class MyClass // error: redefinition of 'MyClass'
{
public:
class InnerClass
{
public:
void boo()
{
foo(*this);
}
};
};
Define MyClass::InnerClass:boo()
after foo
is defined.
class MyClass {
public:
class InnerClass
{
public:
void boo();
};
};
void foo(MyClass::InnerClass& ref)
{
}
void MyClass::InnerClass::boo() {
foo(*this);
}