21xrx.com
2025-03-26 20:50:00 Wednesday
文章检索 我的文章 写文章
C++ 内部类如何调用外部类成员函数
2023-06-24 10:44:33 深夜i     --     --
C++ 内部类 外部类 成员函数 调用

C++ 是一门强大的编程语言,它支持内部类和外部类的定义,但是在使用内部类时,有时候需要调用它所属的外部类的成员函数。那么,C++ 内部类如何调用外部类成员函数?

首先,需要了解一下内部类和外部类的定义方式。内部类定义在外部类的作用域内,并且可以访问外部类的成员变量和成员函数。而外部类的成员函数无法直接访问内部类的成员变量和成员函数,需要通过外部类的对象来访问。

当内部类想要访问外部类的成员函数时,可以通过定义一个指向外部类对象的指针,然后通过指针调用外部类的成员函数。以下是一个示例代码:

class Outer {
public:
  void foo() {
    std::cout << "Outer::foo()" << std::endl;
  }
  
  class Inner {
  public:
    void bar(Outer* outer) {
      outer->foo();
    }
  };
};
int main() {
  Outer outer;
  Outer::Inner inner;
  inner.bar(&outer);
  return 0;
}

在上面的代码中,我们定义了一个 Outer 类,其中嵌套了一个 Inner 类。Outer 类有一个名为 foo 的成员函数,而 Inner 类有一个名为 bar 的成员函数。bar 函数的参数是一个指向 Outer 类对象的指针,通过这个指针调用 foo 函数。

在 main 函数中,我们创建了一个 Outer 类对象和一个 Inner 类对象,然后通过 Inner 对象的 bar 函数调用了 Outer 对象的 foo 函数,输出了 "Outer::foo()"。

还有一种方法可以在内部类中调用外部类的成员函数,那就是通过使用“this”指针。在内部类的成员函数中,使用“this”指针可以指向内部类对象,在指向内部类对象的同时,也可以访问外部类对象的成员函数。以下是一个示例代码:

class Outer {
public:
  void foo() {
    std::cout << "Outer::foo()" << std::endl;
  }
  
  class Inner {
  public:
    void bar() {
      outer->foo();
    }
    
    Outer* outer;
  };
};
int main() {
  Outer outer;
  Outer::Inner inner;
  inner.outer = &outer;
  inner.bar();
  return 0;
}

在上面的代码中,我们定义了一个 Outer 类和一个 Inner 类。Inner 类中定义了一个指针 outer,该指针指向 Outer 类对象。在 bar 函数中,我们通过这个指针调用了 Outer 类的 foo 函数,输出了 "Outer::foo()"。

综上所述,C++ 内部类如何调用外部类成员函数,可以通过指向外部类对象的指针或者使用“this”指针来实现。在实际编程中,需要根据具体的应用场景选择合适的方式。

  
  

评论区