Допустим, у меня есть что-то вроде этого
class Normal_Mode;
class Fast_Mode;
class File_Control; //handles all operations with reading/writing in file
class Main_Control {
private:
some_class *root; //all other classes need access to root pointer since there is all the data(binary tree)
File_Control *c_file_control;
Fast_Mode *c_fast_mode;
...
}
Main_Control::Main_Control ( int argc, char* argv[]) {
...
if ( argc > 1 ) {
c_fast_mode = new Fast_Mode(argc, argv[]);
} else {
c_normal_mode = new Normal_Mode();
};
...
};
int main (int argc, char* argv[]) {
Main_Control c_main_control(argc,argv);
return 0;
}
Допустим, пользовательский ввод имел argc> 1, и я счастлив делать что-то с пользовательским вводом в классе Fast_Mode, но когда я закончу и захочу записать что-то в файл или прочитать что-нибудь из файла, находясь в Fast_Mode.
Как люди в реальном мире получают доступ к классу File_control?
Делают ли они какой-нибудь глобальный массив, заполненный указателями на такие классы, которым нужен только 1 экземпляр.
Они передают указатели Fast_Mode и другим классам, чтобы он мог хранить их в приватных членах для доступа.
или они все время строят / уничтожают такие классы, в зависимости от того, когда это необходимо.
И что они делают с таким * корневым указателем, в котором хранятся все фактические данные и для доступа к нему требуется множество других классов
Или мои дизайнерские идеи совершенно неверны, и люди в реальном мире делают это по-другому?