|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|||||||||||
Прямой доступ к переменным29.05.2014, 23:32. Показов 3162. Ответов 30
Метки нет (Все метки)
Доброго времени суток, форумчане. Сразу оговорю, что название темы может не совсем корректно раскрывать суть вопроса.
Начну с аналога в PHP, где можно писать вот так
Приведу свой пример. Есть структура и функция в которую нужно передать адрес поля структуры. Но поле это выбирает пользователь. Можно конечно навешать
0
|
|||||||||||
| 29.05.2014, 23:32 | |
|
Ответы с готовыми решениями:
30
Доступ к переменным Доступ к переменным класса Доступ из статической функции к не стачисеским переменным |
|
Комп_Оратор)
|
||||||
| 30.05.2014, 01:07 | ||||||
|
Arkaniy, если честно не понял при чём доступ. По примерам из пи-эйч-пи можно подумать, что речь о явном и не явном определении типа. Я и подумал. Тогда можно сказать, что до C++11 возможности использования переменной без предварительного явного объявления типа нет. Начиная с C++11 есть возможность неявного определения в выражениях совмещающих объявление и присваивание (инициализацию):
но это упрощение не отменяет, а упрощает определение типа (несколько затрудняя работу компилятора)).
0
|
||||||
|
Диванный эксперт
|
|||||||||||
| 30.05.2014, 02:05 | |||||||||||
Сообщение было отмечено Arkaniy как решение
Решение
IGPIGP, на сколько я понял,ТС спрашивает о ссылках
2
|
|||||||||||
|
Комп_Оратор)
|
|||||||
| 30.05.2014, 03:44 | |||||||
|
Cra3y, да похоже Вы правы. Но если в PHP можно заселить переменную именем переменной:
![]() Добавлено через 11 минут
1
|
|||||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 30.05.2014, 17:58 [ТС] | |
|
Спасибо всем отписавшимся! Особое спасибо Cra3y
![]() Map'ом и воспользуюсь. Решение довольно простое. Даже грустно, что сам к этому не пришел. Добавлено через 56 минут И еще возник вопрос. Как сделать map для пар string - int, string - string? Тоесть так, чтобы значения могли быть разных типов. Вообще если так возможно. Нашел тут темку с этим вопросом, но ответ был исчерпывающим и отрицательным. Но тема 2009 года и может есть что-то из 11 стандарта.
0
|
|
|
Диванный эксперт
|
|
| 30.05.2014, 18:08 | |
|
Хм.. например использовать boost::variant
1
|
|
|
Master of Orion
|
|
| 30.05.2014, 18:13 | |
|
Arkaniy, если бы как в том же .Net все классы реализовывали бы object, то можно было бы сделать map на object, но в плюсах - хз. Мб может получиться извратиться в void* указателями, но тут уже хз
0
|
|
|
Комп_Оратор)
|
||||||
| 30.05.2014, 19:15 | ||||||
|
Как сделать map для пар string - int, string - string?
0
|
||||||
|
Master of Orion
|
||||||
| 30.05.2014, 19:59 | ||||||
|
IGPIGP, я так понял, что в качестве key хочется иметь строку, а в качестве value - число, строку или еще что. то есть а-ля:
0
|
||||||
|
Комп_Оратор)
|
||
| 30.05.2014, 20:11 | ||
![]() Я сначала <int, string> выложил, а потом вычитал, что ключом должна быть строка и предложил <string, strng>. С типами <string, int> та же история. ![]() Конечно если ключ - целое, то быстрее будет. Psilon, если честно мне непонятно как выбирается поле структуры и зачем передавать адрес поля, а не указатель на экземпляр например. Вообще, в простых случаях можно делать по старинке: объявлять перечисление и массив строк. Тогда в коде можно найти строку используя имя константы как индекс (если декорировать объявление уточняющим типом перечисления). То есть может выглядеть Arr_str[one] (значение вроде "first_val" или просто "one", в зависимости от того что в массиве строк положили). ![]() А поиск по индекса по строке, - руками. Но со словарём поддержка методов класса есть. Так, что дело вкуса.
0
|
||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
||||||
| 30.05.2014, 22:01 [ТС] | ||||||
|
Psilon, с void пытался. Ругается при компиляции
Поле структуры выбирает пользователь. Можно конечно сделать блок условий, как я писал в первом посту, но если полей 10? Писать 10 условий? Вот и задался вопросом выбора поля по введенной строке. Вариант с асоциативным массивом подходит, но тут уже не клеится с другой стороны. Почему передавать поле, а не экземпляр? Потому что нужно именно поле . При каждом вызове пользователь должен определять сам к какому полю обращаться. Хотя может я вообще велосипед делаю... А вот как делать по старинке не сообразил что-то
0
|
||||||
|
Master of Orion
|
||||||
| 30.05.2014, 23:24 | ||||||
|
IGPIGP, ну на примере C# это сделать можно легко. Пример:
0
|
||||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 30.05.2014, 23:50 [ТС] | |
|
Psilon, а на сценарных языках еще проще, но ведь не об этом
0
|
|
|
Master of Orion
|
||||||
| 31.05.2014, 00:57 | ||||||
|
Arkaniy, плюсы и шарп очень похожи, на самом деле. Шарп - это такие плюсы "с человеческим лицом"
Поэтому практически уверен, что на них можно сделать подобным образом все (тем более, что типобезопасность в плюсах намного слабее), просто мы о таком способе не знаем ![]() Не по теме: А сценарные языки вообще не ок. За исключением разве что sql и js :) Добавлено через 3 минуты Arkaniy, если верить гуглу, можно соорудить что-то вроде такого
2
|
||||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 31.05.2014, 01:31 [ТС] | |
|
Psilon, с бустом вообще не знаком. Ладно, буду копать туда значит. Спасибо
![]() Не по теме: По поводу сценарных полностью согласен :drink:
0
|
|
|
Комп_Оратор)
|
||||
| 31.05.2014, 01:31 | ||||
|
А если: Но мне кажется лучше бы задачу увидеть. Расскажите, интересно же.
1
|
||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 31.05.2014, 01:46 [ТС] | |
|
IGPIGP, про пару в мапе знаю, но мне же нужно чтобы ключ был стрингом, а значение перенным типом.
Я тот пост заметил, но попытал счастья в обход буста ![]() А задача, собственно, простая. Придумал себе структуру фильм. Поля такие как режиссер, год, страна и т.д. Как видно, есть и строковые поля, и чиловые. Нужно достать из массива только те фильмы, которые отвечают параметрам запроса пользователя. К примеру, все фильмы 2000 года. Вот и получается, что нужно смотреть именно по полю год. Вот это поле и нужно передать в ф-цию. С этим разобрались, да поля-то разных типов и не ясно было как в мап засунуть эти значения.
0
|
|
|
Комп_Оратор)
|
||
| 31.05.2014, 01:46 | ||
![]() Понимаешь, не пойму как пользователь поля выбирать будет. Для меня структура, запись, строка таблицы, это квант какой-то общей сущности. Матрица её описания, что ли. То есть у слона есть уши, хобот и хвост. Как тут выберешь. Если украшать его цветами, например, то придётся как-то по очереди. Я бы начал с ушей... А что-то можно и не украшать. Но это логика какой-то внутренней процедуры, - "эки-слоно-бана", например. А пользователю нужно бы разрешить выбирать слона. Большого, маленького или... жирафа. А процедура должна соответствовать выбору. Хотя в жизни всяко бывает. Хочется узнать зачем выбирать поле и передавать его по ссылке.
0
|
||
| 31.05.2014, 01:46 | |
|
Помогаю со студенческими работами здесь
20
Доступ к переменным базового класса при наследовании
Friend функции не имеют доступ к закрытым переменным Прямой доступ к видеопамяти Прямой доступ к видео памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|