2016-01-29 1 views
-4

У меня есть следующие 2 файла заголовка класса (Ah и Bh), с функцией внутри каждого:Как получить доступ к переменной-члена класса из другого класса в C++

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

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

Вот их соответствующие 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

Удовлетворены ли вы представлением этого вопроса? – Bathsheba

+0

Отступом кода в вашем вопросе вы можете сделать его похожим на код. (чтение по синтаксису уценки!) – xtofl

ответ

0

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

  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

Я думаю, что статический вариант будет хорошим вариантом для меня здесь. Большое спасибо. –

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(); } 
} 
Смежные вопросы