源文件中的嵌套类定义

时间:2010-12-19 07:19:41

标签: c++ inner-classes member

如果我有这样的嵌套类:

  class MyClass
  {
    class NestedClass
    {
    public:
      // nested class members AND definitions here
    };

    // main class members here
  };

目前,MyClass的定义在CPP文件中,但NestedClass的定义在头文件中,也就是说,我无法在CPP中声明函数/构造函数{1}}文件。

所以我的问题是,如何在cpp文件中定义NestedClass的功能?如果我不能,那是什么原因(如果是这样的话,我对于为什么会发生这种情况有一个模糊的想法,但我想要一个很好的解释)?结构怎么样?

1 个答案:

答案 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.
};