所以我有两个类,比如说class A
和class B
。在B类的构造函数中,我创建了一个类型为A(private)的对象。在A类中,我有一个显示A的内容的成员函数void displayA()
。通过对象访问成员函数
现在我运行int main()
,我创建了一个类型B的对象(最好也是存储在B中的类型A的对象)。我的问题是我如何使用A到B的方法?
我试过objB.displayA()
,但那显然没有奏效。我是否需要在B中创建一个调用A中成员函数的成员函数?还是有更优雅的解决方案
所以我有两个类,比如说class A
和class B
。在B类的构造函数中,我创建了一个类型为A(private)的对象。在A类中,我有一个显示A的内容的成员函数void displayA()
。通过对象访问成员函数
现在我运行int main()
,我创建了一个类型B的对象(最好也是存储在B中的类型A的对象)。我的问题是我如何使用A到B的方法?
我试过objB.displayA()
,但那显然没有奏效。我是否需要在B中创建一个调用A中成员函数的成员函数?还是有更优雅的解决方案
class B
必须具有class A
类型的成员变量。例如:
class B
{
public:
A a;
int x;
};
然后,你可以这样调用:
B objB;
objB.a.displayA();
你要么需要通过objB
的class A
你正在改变实例,然后你通过它里面的功能,来电obA.displayA();
,或者你可以创建objA
为objB
类变量,然后在B的任意函数中调用objA.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;
}
,比THD B级也可以是:
`class B
{
public:
B():a(){}
A a;
void call() {
this -> a.displayA();
}
};`
,比拨打电话(),它在B类
他们是私人的,对不起 – TheGuyWithStreetCred 2014-09-30 09:07:35
你的意思是a的变量是私人的,并且上面的secend B类代码可以调用displayA(),0.0 – ipaomian 2014-09-30 09:11:20
对象a是私人的。只有构造函数和成员函数是公共的。我应该为对象添加一个吸气剂吗? – TheGuyWithStreetCred 2014-09-30 09:16:13
不知道的是,谢谢:)但是,如果“对象a”是私人的呢?我需要吸气剂吗? – TheGuyWithStreetCred 2014-09-30 09:05:05
是的。考虑让B有一个调用'a.displayA'的函数,而不是纯粹的'getter'(它们通常不是一个好主意)。如果你为'a'的每个功能输入getter等,那么你也可以让'a'公开。 – 2014-09-30 09:17:43
谢谢你,很好的建议 – TheGuyWithStreetCred 2014-09-30 09:29:29