У меня есть приложение Windows Form C++. В нем у меня есть член, который записывает записи журнала (записи «WriteLog» для различных событий. (в публичном классе ref Form1 :) public: Void WriteLog (System :: Int32, System :: Int32, System :: String ^);Доступ к функциям класса класса Form Form Form Forms извне
Теперь я создал отдельный класс, где я хочу использовать функцию WriteLog (например, во время построения, записать в журнал, который создал объект). Но я не могу получить доступ к этой функции. .. получить на объект Form1, он не кажется, есть имя объекта Там нет FormName = gcnew Форма Единственное, что я нашел, было "Application :: Run (gcnew Form1());"
I будет ожидать, что сможет вызвать Writelog, как formname-> WriteLog (1,1, "test")
Я полностью понимаю концепцию инкапсуляции, изложенную ниже. Но я хочу получить доступ к функции-члену класса формы Referencing Windows Form elements in other classes
сохраните свой экземпляр 'Form1', а не просто передайте его в' Application :: Run() '. –
Сколько регистраторов вы хотите создать? Большинство программистов довольны одним, поэтому они объявляют свой журнал «static». Итак, теперь это просто, вы используете Form1 :: WriteLog (...); Следующее понимание заключается в том, что регистратор не имеет ничего общего с объектом Form, поэтому они объявляют его отдельно. Решает множество проблем с круговой зависимостью. Следующее понимание заключается в том, что ведение журнала уже является встроенной функцией в .NET, поэтому они используют Trace :: WriteLine (...); –