c++ - 源文件中的嵌套类定义

标签 c++ inner-classes member

如果我有这样的嵌套类:

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

    // main class members here
  };

目前MyClass的定义在CPP文件中,而NestedClass的定义在头文件中,即I不能在 CPP 文件中声明函数/构造函数。

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

最佳答案

你可以。如果你的内部类有这样的方法:

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

关于c++ - 源文件中的嵌套类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482005/

相关文章:

c++ - C++ 中的 fgets 等价物

c++ - 在 C++ 中解析 RFC3339 日期

c++ - 为类模板的特定嵌套类实现非成员泛型函数

java - 类文件中的内部类但不在类主体中?

f# - 使用 F# 的类型成员中的元组

c++ - 正在发送 UDP 广播,但未收到

c++ - Boost 文件系统存在访问冲突

java - 错误: asking to create a new class while accessing innerclass

c++ - CUDA:巨大的性能影响调用成员函数

C++ 数据成员在单独的成员函数中定义后返回垃圾