У меня (для программистов на C ++ лучше меня) простая проблема с классами и указателями.
Я думал о публикации примера кода, описывающего мою проблему, но мне было проще просто объяснить это словами.
Предположим, у меня есть три класса:
- Класс A: Основной класс - он содержит экземпляры
B
и C
.
- Класс B: Этот класс содержит метод, который выводит некоторую строку, называем ее
Greet()
.
- Класс C: У этого метода тоже есть метод, но этот метод должен вызывать
Greet()
в случае B
, который находится в классе A
. Давайте назовем это DoSomethingWithB()
Итак, программа запускается, в основной функции я создаю экземпляр A
. A
снова создает экземпляры B
и C
. Затем А звонит C.DoSomethingWithB();
.
И тут начинается моя проблема: я не могу получить доступ к B
изнутри C
.
Очевидно, мне нужно будет передать указатель на 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();
}