C++ 通过对象访问成员函数

C++ 通过对象访问成员函数,c++,function,object,member,C++,Function,Object,Member,所以我有两个类,比如说A类和B类。在类B的构造函数中,我创建了一个类型为A(private)的对象。在类A中,我有一个成员函数,用于显示,void displayA()的内容 现在我运行intmain(),我创建了一个类型为B的对象(理想情况下也是存储在B中的类型为A的对象)。我的问题是如何使用A到B中的方法 我尝试了objB.displayA(),但显然没有成功。我是否需要在B中创建一个调用a中成员函数的成员函数?或者是否有更优雅的解决方案您需要传递正在更改的类a的实例,然后在传递该实例的函数

所以我有两个类,比如说
A类
B类
。在类B的构造函数中,我创建了一个类型为A(private)的对象。在类A中,我有一个成员函数,用于显示,
void displayA()
的内容

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


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

您需要传递正在更改的
类a
的实例,然后在传递该实例的函数内部调用
obA.displayA()
,或者您可以创建
objA
作为
objB
的类变量,然后调用
objA.displayA()在B的任何函数中。

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

class B
{
public:
    A a;
    int x;
};
然后你可以这样称呼它:

B objB;
objB.a.displayA();

首先,你没有公共和私人的吗? 你在你的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;
}

然后调用call(),它在类B中不知道,谢谢:)但是如果
对象a
是私有的呢?我需要吸气剂吗?需要。而不是纯粹的<代码>吸收器< /代码>(它们通常不是一个好主意)考虑B有一个调用<代码> .DePasa的函数。如果您为
a
的每个函数输入getter等,那么您也可以将
a
设置为公共。它们是私有的,所以您的意思是a的变量是私有的?并且secend类B上面的代码可以调用displayA(),0.0对象a是私有的。只有构造函数和成员函数是公共的。然后我应该为对象a添加一个getter吗?是的,它可以获取私有变量a,您最好阅读,它可以解决您的问题:)
`class B
 {
  public:
      B():a(){}
      A a;
      void call() {
          this -> a.displayA();
      }
  };`