Как работает макрос QT Q_PROPERTY?
Q_PROPERTY:
Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
Мне нужно создать макрос, похожий на Q_PROPERTY. моя цель состоит в том, чтобы хранить в векторе атрибут классов
, например, у меня есть класс Person
Person {
private:
std::string name;
std::string lastname;
public:
std::string name();
void set_name(std::string name);
}
я хочу сделать что-то вроде Q_PROPERTY в моем классе, чтобы сохранить поля в векторе, какназывается getter, setter, а также тип и имя атрибута
, например, получить из макроса эти данные:
TYPE NAME READ WRITE
если у меня есть макрос:
#define PROPERTY(...)
PROPERTY(std::string name READ name WRITE set_name)
PROPERTY(std::string email READ email WRITE set_email)
как я могу извлечь элементы из VA_ARGS , например, чтобы сделать это:
__VA_ARGS__['TYPE'] this should write std::string
__VA_ARGS__['NAME'] this should write name
__VA_ARGS__['READ'] this should write name
__VA_ARGS__['WRITE']this should write set_name
с этими данными, я хочу написать структуру для сохраненияэто в векторе
и сопоставить весь класс для имитации некоторого отражения.