C++ 实现您自己的属性系统(类似Qt)

C++ 实现您自己的属性系统(类似Qt),c++,qt,properties,C++,Qt,Properties,我想实现我自己的简单属性系统(C++),类似于Qt的Q_属性提供的系统。问题是Qt的属性不能从宏内部工作,我正试图使用宏在属性之上添加一些附加功能。其目的是能够声明属性,并通过属性字符串名称表示和常规方法自动获得访问权限: MY_PROPERTY(QString, Name) ... getObject()->setProperty("Name", "John"); ... myObject->setName("John"); QString name = myObject->

我想实现我自己的简单属性系统(C++),类似于Qt的Q_属性提供的系统。问题是Qt的属性不能从宏内部工作,我正试图使用宏在属性之上添加一些附加功能。其目的是能够声明属性,并通过属性字符串名称表示和常规方法自动获得访问权限:

MY_PROPERTY(QString, Name)
...
getObject()->setProperty("Name", "John");
...
myObject->setName("John");
QString name = myObject->getName();
我想用一行代码添加所有需要的功能,但以下代码无法工作,因为MOC不展开宏:

#define MY_PROPERTY(type, name)\
Q_PROPERTY(type name READ name WRITE change##name)\
\
void set##name(type param)\
{\
    m_##name = param;\

    DO SOMETHING
}\  
请提供有关此主题的任何好书/文章。

大多数(>95%)条件下,Qt属性系统就足够了,如果您真的想在设置或获取属性时在自己的属性上添加一些内容,可以使用Qt信号/插槽系统来完成此操作


如果你最终还是想做你自己的属性系统,我认为最好的参考是Qt源代码,不是吗?

请举例说明“Qt属性不能从宏内部工作”。举一个你想做什么的例子。您的代码不会显示Qt没有提供的任何内容。