Как получить доступ к переменной члена класса из другого класса в переполнении стека

У меня есть следующие 2 заголовочных файла класса (A.h и B.h), с функцией внутри каждого:

класс А
{
общественности:
двойной f (двойной);
};

класс B
{
общественности:
двойной г (двойной);
};

Вот их соответствующие файлы cpp:

double A::f(double variable1)
{
// do stuff on variable 1
}
double B::g(double variable2)
{
// do stuff on variable2 using f from A
}

Я хотел бы использовать функцию f (из A) внутри функции g (в B). Как мне это сделать?

-4

Решение

Несколько вариантов:

  1. Сделать функции static, Вы можете сделать это, если функции не используют нестатических членов класса. Тогда вы можете позвонить A::f(variable2) в B::g

  2. Есть B унаследовать от A, Тогда вы можете получить доступ A::f(variable2) от B::g

  3. Есть пример из A как член из B, Затем вы получаете доступ A::f(variable2) из этого экземпляра.

  4. Передать экземпляр A в функцию B::g, Доступ к функции через этот экземпляр.

(1) хорошо работает, если классы служат чуть больше, чем действуют как способ объединения связанных функций вместе. (Хотя я предпочитаю использовать namespace для таких случаев.)

(2) хорошо работает, если структура наследования логична. Не делай этого, если это не так.

(3) это обычное дело.

0

Другие решения

объявить методы как static,

static double A::f(double variable1)
{
// do stuff on variable 1
}

тогда вы можете использовать, например,

double B::g(double variable2)
{
return A::f(variable2)
}

или что вы хотите сделать.

0

Вам нужен объект типа B сделать это:

class B {
public:
A my_a;
void g() { my_a.f(); }
}
0
По вопросам рекламы [email protected]