WTL из View получить MainFrm
Предположим у меня есть класс MainFrm и класс FirstView. В классе MainFrm определена некоторая переменная. Как мне обратиться к ней из FirstView?
Как один из вариантов можеш обявить MainFrm как extern и
создать метод аксессор в MainFrm типа GetMyVar:
//mainfrm.h
extern MainFrm m_main;
class MainFrm {
public:
bool GetMyVar(){return m_MyVar;}//метод аксессор
private:
bool m_MyVar;
};
...
//FirstView.h
MainFrm m_main;
class FirstView{
void Method(){
bool var = m_main.GetMyVar();//получаем переменную с MainFrm.
}
};
Можно конечно получить так переменную и без метода аксессора если обявить ее секциии public класса MainFrm, но это плохой стиль. Можно конечно объявить себя другом для класса MainFrm и при этом получать доступ к закрытым членам.
Например:
class FirstView;//forward declaration
class MainFrm {
friend class FirstView;
....
private:
bool MyVar;
}
class FirstView{
void Method(){
bool var = m_main.MyVar;//получаем защищенную переменную с MainFrm.
}
};
Ну и так же есть и другие способы передачи указателя классу,не только обявив его глобально как экстерн. Можно передавать указатель на MainFrm при создании экземпляра класса FirstView:
class FirstView{
FirstView(MainFrm* lp){//конструктор
m_myclass=lp;
}
void f()
{
m_myclass //доступ к членам класса как описано выше
}
private:
MainFrm* m_myclass;
}