Как получить доступ к переменной члена класса из другого класса в C++
У меня есть следующие 2 заголовочных файла класса (Ah и Bh), с функцией внутри каждого:
класс A { public: double f(double); };
класс B { public: double g(double); };
Вот их соответствующие файлы cpp:
включает "А"
double A::f(double variable1)
{
// do stuff on variable 1
}
включает "Bh"
включает "А"
double B::g(double variable2)
{
// do stuff on variable2 using f from A
}
Я хотел бы использовать функцию f (из A) внутри функции g (в B). Как мне это сделать?
3 ответа
Несколько вариантов:
Сделать функции
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(); }
}