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();
}
};`