Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 122

Получение списка public свойств класса

01.11.2011, 18:20. Показов 4552. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется набор различных классов с различными количествами публичных текстовых свойств. Мне нужно эти поля редактировать. Как получить список публичных полей класса и определить тип данных поля, чтение/запись? Это вообще возможно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2011, 18:20
Ответы с готовыми решениями:

получение свойств класса
Здравствуйте. Есть такой код class Cache { var $a = 0; function set($t) { $this->a = $this->a+$t; } }

Вызов public метода public класса внутри static метода static класса
Подскажите, пожалуйста, возможен вызов не статического метода не статического класса внутри статического метода статического класса? ...

Наследование от protected класса: будут ли public члены класса Б доступны классу А
Добрый день! Если пронаследовать public класс А от protected класса Б, будут ли public члены класса Б доступны классу А, и доступны...

10
Заблокирован
01.11.2011, 18:24
Цитата Сообщение от some777 Посмотреть сообщение
Имеется набор различных классов с различными количествами публичных текстовых свойств. Мне нужно эти поля редактировать. Как получить список публичных полей класса и определить тип данных поля, чтение/запись? Это вообще возможно?
Нет, это невозможно.

Кстати сказать, а не объясните, что означает термин "текстовое свойство"?!
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.11.2011, 18:37
some777, Вам точно плюсы нужны? В чистых плюсах свойств нет. Другое дело если что-то из .NET
0
Заблокирован
01.11.2011, 19:25
рефлексия доступна с Qt, покрайней мере кое-что, глубоко я не разбирался. По удобству использования значительно уступает аналогичным средствам Java
http://doc.trolltech.com/4.5/metaobjects.html
в конце страницы ссылки, там пощёлкаешь и раскрутишь всё это дело

Добавлено через 7 минут
Цитата Сообщение от some777 Посмотреть сообщение
Как получить список публичных полей класса
это можно сделать
остальное честно говоря не понял
0
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 122
01.11.2011, 20:26  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
Вам точно плюсы нужны? В чистых плюсах свойств нет. Другое дело если что-то из .NET
В .Net на эту тему вообще красота!
Всем откликнувшимся - спасибо, решил хранить список полей прям в классе.

Цитата Сообщение от Сыроежка Посмотреть сообщение
Кстати сказать, а не объясните, что означает термин "текстовое свойство"?!
Прошу не пинать за терминологию, имелось ввиду свойство (поле) типа AnsiString.
0
Заблокирован
01.11.2011, 20:29
Цитата Сообщение от some777 Посмотреть сообщение
В .Net на эту тему вообще красота!
Всем откликнувшимся - спасибо, решил хранить список полей прям в классе.


Прошу не пинать за терминологию, имелось ввиду свойство (поле) типа AnsiString.
Я думаю, что ваша проблема состоит в том, что вы с одного языка переключились на другой, и стараетесь на нем писать в рамках парадигм предыдущего языка. Как правило, это порочная практика.
0
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 122
02.11.2011, 09:55  [ТС]
Как уже сообщал, попытаюсь в каждом классе подготовить массив структур паблик свойств (название, тип, тип доступа).
Хотелось бы в конструкторе каждого из классов заполнить этот массив структур.
Как можно получить список свойств своего класса?
0
Заблокирован
02.11.2011, 10:43
нету в С++ средств для того чтобы во время выполнения издеваться над классами. На этапе компиляции проблем нет, скурпулёзно заполняй и выводи что хочешь. Но это не рефлексия, а реализация настоящей рефлексии явно выше уровня этого раздела. Для этого как вариант придётся писать чтото вроде moc с Q_OBJECT, нетривиальная задача

Добавлено через 4 минуты
Цитата Сообщение от some777 Посмотреть сообщение
Как можно получить список свойств своего класса?
только один вариант я вижу, хранить этот список в классе или в каждом свойстве добавить информацию о самом себе, что наверно более практично. На этапе выполнения средствами языка - никак, это же не jre
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
02.11.2011, 10:50
Цитата Сообщение от some777 Посмотреть сообщение
Как уже сообщал, попытаюсь в каждом классе подготовить массив структур паблик свойств (название, тип, тип доступа).
Хотелось бы в конструкторе каждого из классов заполнить этот массив структур.
Скорее всего Вы пытаетесь решить проблему неочевидным способом, может быть, если Вы опишите изначальную проблему, то найдется более благородное решение
0
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 122
02.11.2011, 13:57  [ТС]
Цитата Сообщение от fasked Посмотреть сообщение
Скорее всего Вы пытаетесь решить проблему неочевидным способом, может быть, если Вы опишите изначальную проблему, то найдется более благородное решение
Из бинарного файла читается структура, которая записывается в поля (текстовые/целочисленные) различных классов. Задача: предоставить графический интерфейс для редактирования полей класса. Классов около десятка, хотелось бы просто в окне редактирования класса динамически набросать компоненты для редактирования в зависимости от выбранного из дерева классов класса.
0
Заблокирован
02.11.2011, 14:09
some777, есть такой слегка извращённый вариант, когда паблик-членом класса является не сам стринг, а НЕЧТО в духе TProperty<std::string> myPropertyText

Настройка объекта пропертей выполняется конструктором класса (либо, что менее универсально - конструктором проперти спиализированном для стрингов).
То есть происходит настройка "невидимых" геттеров/сеттеров.

Класс-клиент в любом случае должен будит хардкорно самостоятельно знать, какие именно поля-проперти в него воткнули, и уметь выдавать эти данные наружу.

Разных идей реализации шаблонного класса TProperty<тип> в сети гуляет масса.
Некоторые из них весьма шустро работают.

Проблема в том, что в с++ все они в той или иной степени конфликтуют с парадигмой ООП.
И по сути являются костыльным сахаром. Шаг в сторону - нарушение инкапсуляции, шаг в другую сторону - невозможно реализовать тот, или иной функционал для пропертей.


Цитата Сообщение от some777 Посмотреть сообщение
Из бинарного файла читается структура, которая записывается в поля (текстовые/целочисленные) различных классов. Задача: предоставить графический интерфейс для редактирования полей класса.
Очень смутно понимаю суть задачи, но что-то мне подсказывает, что механизм пропертей для этой задачи вообще не нужен. (Впрочем в с++ механизм пропертей не нужен в принципе)

Я бы на вашем месте смотрел бы в сторону "фабрики объектов"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2011, 14:09
Помогаю со студенческими работами здесь

Целесообразность использования свойств вместо public полей в приложениях, где важна скорость
Visual Studio в том коде, который я пишу для решения одной числодробильной задачи, упорно подсказывал мне о необходимости заменять поля...

Private и public члены класса
Привет! Есть такой класс: class CDateTime{ private: qint16 year_; qint8 month_, day_; qint8 hours_, minutes_,...

Получение свойств MS-документа.
Уважаемые господа! Подскажите пожалуйста (лучше примерчик), как получить свойства MS-документа, в частности, MSWord, Excel, Visio....

Получение свойств COM порта
Как получить данное название из диспетчера устройств &quot;USB-SERIAL CH340&quot; (COM4)? К четвёртому COM порту подключена ардуино.

Получение свойств формы
задача такая, сделал приложение, в нем есть &quot;Настройка&quot;, открывается в отдельном окне... нужно получить свойство прозрачности основной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru