對於類和指針,我有一個(對於C++程序員比我更好)的簡單問題。 我想過發表描述我的問題的示例代碼,但我發現用單詞解釋它比較容易。C++指向類實例的指針
假設我有三個類:阿
- 類別:主類 - 它包含兩個
B
和C
的一個實例。 - B類:該類包含一個輸出字符串的方法,稱之爲
Greet()
。 - C類:這一個也有一個方法,但該方法必須在位於類
A
的B
的實例中調用Greet()
。我們來命名它DoSomethingWithB()
所以程序啓動時,在主函數中我創建了一個A
的實例。 A
再次創建B
和C
的實例。然後,A呼叫C.DoSomethingWithB();
。
並且我的問題開始出現:我無法從C
中訪問B
。
很顯然,我需要一個指針傳遞給B
到DoSomethingWithB()
函數,這樣我可以叫B.Greet()
內C
龍解釋,簡短的問題:我如何做到這一點?
示例代碼來電:
#include <iostream>
using namespace std;
class B
{
public:
void Greet()
{
cout<<"Hello Pointer!"<<endl;
}
};
class C
{
public:
void DoSomethingWithB()
{
// ... b.Greet(); Won't work obviously
}
};
class A
{
public:
B b; // Not caring about visibility or bad class/variable names here
C c;
void StartTest()
{
c.DoSomethingWithB();
}
};
int main()
{
A mainInstance;
mainInstance.StartTest();
}
這就是我正在尋找的,還不太熟悉指針。這是最有效的方法嗎? – lamas 2010-02-16 17:18:46
我也在這裏提到** const **引用,只是爲了顯示該選項。 – 2010-02-16 17:19:35
我不確定我是否錯過了一些東西,因爲你的問題包含了一些關於課堂使用和可見性的知識;這似乎過於直接的答案。但每個人都需要從頭開始學習;這只是這個問題似乎表明,可能還有更多。 – 2010-02-16 17:22:50