我不是 C++ 的新手,但我仍然无法弄清楚语法,问题是它是类中的类。我只找到了正常前向声明的答案。请不要把我的代码完美看得太严重。
我尝试了以下但没有任何效果:
class MyClass {
public:
class InnerClass
{
public:
void boo()
{
foo(*this); // error: foo() is not known
}
};
};
void foo(MyClass::InnerClass& ref)
{
}
或
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);
}
};
};
或
class MyClass
{
public:
class InnerClass;
};
void foo(MyClass::InnerClass& ref)
{
}
class MyClass // error: redefinition of 'MyClass'
{
public:
class InnerClass
{
public:
void boo()
{
foo(*this);
}
};
};
在定义
MyClass::InnerClass:boo()
后定义foo
。
class MyClass {
public:
class InnerClass
{
public:
void boo();
};
};
void foo(MyClass::InnerClass& ref)
{
}
void MyClass::InnerClass::boo() {
foo(*this);
}
一个简单的方法是在内部类定义之前声明函数
class MyClass {
public:
class InnerClass;
};
void foo(MyClass::InnerClass& ref);
class MyClass::InnerClass {
public:
void boo()
{
foo(*this);
}
};
void foo(MyClass::InnerClass& ref)
{
}