Как получить доступ к переменной члена класса из другого класса в 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 ответа

Решение

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

  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) это обычное дело.

Объявить методы как 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(); }
}
Другие вопросы по тегам