0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
||||||
1 | ||||||
Как скрыть поле для файла main?24.09.2014, 02:16. Показов 1598. Ответов 24
Метки нет (Все метки)
Привет всем. Есть два файла: main и device. В device имеется определение структуры:
Как скрыть это поле для файла main?
0
|
24.09.2014, 02:16 | |
Ответы с готовыми решениями:
24
Как скрыть поле в сводной таблице? Как скрыть поле формы file Как правильно скрыть Ruchtext поле? Как передать (или присвоить) имя в поле класса из main? |
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
||||||
24.09.2014, 07:31 | 3 | |||||
1
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
|
24.09.2014, 11:23 [ТС] | 4 |
alsav22, ну, т.е. если я сделал вызов функции по указателю на нее, я скрыл реализацию? Или я как-то путаю это понятие? Раскройте, пожалуйста, Ваш ответ.
korvin_, я пишу на чистом Си, и пытаюсь реализовать в некотором смысле фишку C++.
0
|
24.09.2014, 11:26 | 5 |
1
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
|
24.09.2014, 11:37 [ТС] | 6 |
Что-то типа виртуальных функций, где реализацию методов объекта буду менять динамически, присваивая реализации указателю на функцию в структуре.
Но а визуально чисто хотелось бы не знать, что там в этой структуре еще расположено, т.е. для файлов "железа" структура выглядит полноценной и они имеют доступ ко всем ее элементам, а для main (т.е. для программы пользователя) - только те параметры и функции, которые он должен использовать и ничего лишнего.
0
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
|||||||||||||||||||||
24.09.2014, 12:15 [ТС] | 8 | ||||||||||||||||||||
В общем так.
В файле device есть структура typedef struct
Таким образом пользователь не сможет "накосячить", записав не в тот элемент структуры чего-нибудь ненужного. Получается, что в системных файлах, которые работают с кодом железа, структура видна полностью, а для пользователя она существует как
0
|
24.09.2014, 12:31 | 9 |
Ну так сделайте 2 версии вашей структуры: одну с которой сможет работать только пользователь (например в мейне), и вторую "для спецфункций" со всеми плюшками.
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
24.09.2014, 12:38 | 10 |
Arlleex, вы не путаете процесс написания кода с процессом использования? Редактор в любом случае будет подсвечивать поля структуры. Какое отношение это имеет к собранному exe? Если хотите, чтобы из main() не были доступны поля, то делайте их приватными, и делайте публичные методы для работы с этими полями. В этих методах уже предусмотрите, чтобы:
1
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
||||||
24.09.2014, 12:39 [ТС] | 11 | |||||
Это, т.е., получится примерно так:
Но тут все равно создается начальный экземпляр MyDevice со всеми полями в структуре, и пользователь все-таки сможет залезть туда ненароком... Все же если нет таких методов, то никто не погибнет, в любом случае Я просто хотел узнать, есть ли какие-то способы реализовать подобный "инструментарий"
0
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
|
24.09.2014, 12:46 [ТС] | 13 |
MyDevice.b = 5, например, в данном случае. Но b то мы пытались ограничить от доступа.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
24.09.2014, 12:56 | 14 | |||||
Вы под пользователем, кого имеете ввиду? Того, кто вашим кодом будет пользоваться, или того, кто будет пользоваться собранной программой?
Добавлено через 1 минуту Для этого вот: Добавлено через 7 минут
1
|
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 34
|
||||||
24.09.2014, 13:05 [ТС] | 15 | |||||
Но в действительности объект Port содержит еще кучу параметров Как-то так, криво, я попытался донести то, что я хотел получить, и вроде как, получил, спасибо всем! Добавлено через 7 минут Жаль, что в стандартном Си-компиляторе нет private, и прочих ключевых слов C++ и соответствующих механизмов...
0
|
24.09.2014, 13:21 | 17 | |||||||||||||||
Нет не так. Я имею ввиду нечто наподобие:
main.c
Как-то так. Код схематичный.
0
|
HighPredator
|
24.09.2014, 13:41
#19
|
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
24.09.2014, 14:41 | 20 |
Arlleex, зачем тебе тогда вообще делать Init -- полем структуры?
0
|
24.09.2014, 14:41 | |
24.09.2014, 14:41 | |
Помогаю со студенческими работами здесь
20
Как скрыть поле из бд после выполнения функции Как нажатием кнопки скрыть текстовое поле? Как скрыть моргающую каретку в поле Edit Как можно скрыть поле и его подпись в форме? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |