我不是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);
}
};
};
2条答案
按热度按时间cxfofazt1#
一个简单的方法是在内部类定义之前声明函数,如
ttcibm8c2#
定义
foo
后定义MyClass::InnerClass:boo()
。