У меня есть следующие 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). Как мне это сделать?
Несколько вариантов:
Сделать функции static
, Вы можете сделать это, если функции не используют нестатических членов класса. Тогда вы можете позвонить A::f(variable2)
в B::g
Есть B
унаследовать от A
, Тогда вы можете получить доступ A::f(variable2)
от B::g
Есть пример из A
как член из B
, Затем вы получаете доступ A::f(variable2)
из этого экземпляра.
Передать экземпляр A
в функцию B::g
, Доступ к функции через этот экземпляр.
(1) хорошо работает, если классы служат чуть больше, чем действуют как способ объединения связанных функций вместе. (Хотя я предпочитаю использовать namespace
для таких случаев.)
(2) хорошо работает, если структура наследования логична. Не делай этого, если это не так.
(3) это обычное дело.
объявить методы как static
,
static double A::f(double variable1)
{
// do stuff on variable 1
}
тогда вы можете использовать, например,
double B::g(double variable2)
{
return A::f(variable2)
}
или что вы хотите сделать.
Вам нужен объект типа B
сделать это:
class B {
public:
A my_a;
void g() { my_a.f(); }
}