如果我有这样的嵌套类:
class MyClass
{
class NestedClass
{
public:
// nested class members AND definitions here
};
// main class members here
};
目前,MyClass
的定义在CPP
文件中,但NestedClass
的定义在头文件中,也就是说,我无法在CPP
中声明函数/构造函数{1}}文件。
所以我的问题是,如何在cpp文件中定义NestedClass
的功能?如果我不能,那是什么原因(如果是这样的话,我对于为什么会发生这种情况有一个模糊的想法,但我想要一个很好的解释)?结构怎么样?
答案 0 :(得分:52)
你可以。如果你的内部类有一个类似的方法:
class MyClass {
class NestedClass
{
public:
void someMethod();
};
// main class members here
};
...然后您可以在.cpp文件中定义它,如下所示:
void MyClass::NestedClass::someMethod() {
// blah
}
结构几乎与C ++中的类相同 - 只是为了访问而默认为'public'。它们在所有其他方面都被视为类。
你可以(如评论中所述)只是声明一个内部类,例如:
class MyClass {
class NestedClass;
// blah
};
..然后在实现文件中定义它:
class MyClass::NestedClass {
// etc.
};