通过对象访问成员函数

时间:2014-09-30 08:42:10

标签: c++ function object member

所以我有两个课程,让我们说class Aclass B。在B类的构造函数中,我创建了一个A类型的对象(私有)。在A类中,我有一个显示A,void displayA()内容的成员函数。

现在我运行int main(),我创建了一个B类对象(理想情况下也是存储在B中的A类对象)。我的问题是如何使用A到B中的方法?

我尝试objB.displayA(),但这显然不起作用。我是否需要在B中创建一个成员函数来调用A中的成员函数?或者是否有更优雅的解决方案

3 个答案:

答案 0 :(得分:2)

class B必须具有class A类型的成员变量。例如:

class B
{
public:
    A a;
    int x;
};

然后你可以这样称呼它:

B objB;
objB.a.displayA();

答案 1 :(得分:1)

您需要传递objB您正在更改的class A实例,然后在传递它的函数内,调用obA.displayA();,或者您可以创建{{1} }}作为objA的类变量,然后在B的任何函数中调用objB

答案 2 :(得分:1)

首先,你不公开私人吗? 而且,在你的B班中,它是变量,哪个类型是A类; 像这样

#include <iostream>
class A
{
    public:
        void displayA() {
            std::cout << "call a" << std::endl;
        }   
};

class B
{
    public:
        B():a(){}
        A a;
};
int main(int argc, const char *argv[])
{
    B b;
    b.a.displayA();
    return 0;
}

而且B级也可以是:

`class B
 {
  public:
      B():a(){}
      A a;
      void call() {
          this -> a.displayA();
      }
  };`

然后调用B类中的call()