对于类和指针,我有一个(对于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