Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
some777
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 114
01.11.2011, 18:20     Получение списка public свойств класса #1
Имеется набор различных классов с различными количествами публичных текстовых свойств. Мне нужно эти поля редактировать. Как получить список публичных полей класса и определить тип данных поля, чтение/запись? Это вообще возможно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
01.11.2011, 18:24     Получение списка public свойств класса #2
Цитата Сообщение от some777 Посмотреть сообщение
Имеется набор различных классов с различными количествами публичных текстовых свойств. Мне нужно эти поля редактировать. Как получить список публичных полей класса и определить тип данных поля, чтение/запись? Это вообще возможно?
Нет, это невозможно.

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

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

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


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

Добавлено через 4 минуты
Цитата Сообщение от some777 Посмотреть сообщение
Как можно получить список свойств своего класса?
только один вариант я вижу, хранить этот список в классе или в каждом свойстве добавить информацию о самом себе, что наверно более практично. На этапе выполнения средствами языка - никак, это же не jre
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
02.11.2011, 10:50     Получение списка public свойств класса #9
Цитата Сообщение от some777 Посмотреть сообщение
Как уже сообщал, попытаюсь в каждом классе подготовить массив структур паблик свойств (название, тип, тип доступа).
Хотелось бы в конструкторе каждого из классов заполнить этот массив структур.
Скорее всего Вы пытаетесь решить проблему неочевидным способом, может быть, если Вы опишите изначальную проблему, то найдется более благородное решение
some777
3 / 3 / 0
Регистрация: 25.09.2009
Сообщений: 114
02.11.2011, 13:57  [ТС]     Получение списка public свойств класса #10
Цитата Сообщение от fasked Посмотреть сообщение
Скорее всего Вы пытаетесь решить проблему неочевидным способом, может быть, если Вы опишите изначальную проблему, то найдется более благородное решение
Из бинарного файла читается структура, которая записывается в поля (текстовые/целочисленные) различных классов. Задача: предоставить графический интерфейс для редактирования полей класса. Классов около десятка, хотелось бы просто в окне редактирования класса динамически набросать компоненты для редактирования в зависимости от выбранного из дерева классов класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 14:09     Получение списка public свойств класса
Еще ссылки по теме:

C++ Private и public члены класса
Получение доступа к переменным класса из другого класса C++
C++ Запрещение переинициализации public-поля как члена класса

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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
02.11.2011, 14:09     Получение списка public свойств класса #11
some777, есть такой слегка извращённый вариант, когда паблик-членом класса является не сам стринг, а НЕЧТО в духе TProperty<std::string> myPropertyText

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

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

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

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


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

Я бы на вашем месте смотрел бы в сторону "фабрики объектов"
Yandex
Объявления
02.11.2011, 14:09     Получение списка public свойств класса
Ответ Создать тему
Опции темы

Текущее время: 14:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru