所以我有兩個類,比如說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