问题标签 [metaobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在python中,如果我将一个变量分配给一个方法,这意味着什么?
阅读 CherryPy 教程我遇到了这个
那是什么意思?在方法索引的局部范围内暴露了一个变量?如果是这样,我可以改变暴露的价值吗?我认为这与 python 的 MetaObject 协议将类定义公开为对象本身有关。
qt - Qt - 调用将自定义指针作为参数的插槽
我试图破解 Qt 的信号和槽,我遇到了一个问题,即 QMetaType::invokeMethod 不能正确地将指针参数传递给被调用的槽。
然后我这样称呼它:
哪里class MyObject : public QObject { ... }
。我也这样Q_DECLARE_METATYPE(MyObject *)
做qRegisterMetaType<MyObject *>("MyObject *")
0
发生的情况是接收器上的插槽正在被调用,但是无论我传递给call(...)
as什么,参数的值总是Q_ARG
出于好奇,我查看了接收器自动生成的 MOC 文件,发现插槽是使用以下代码调用的:
结果表明 的值_a[1]
具有 的正确地址MyObject *
。但reinterpret_cast
它变成了0
.
现在我有以下问题:
1) 如何以编程方式调用插槽并确保指针参数正确传递给插槽?2) 这是什么*reinterpret_cast< MyObject*(*)>(_a[1])
意思?额外的括号是什么(*)
意思,以及如何解释这段代码?
c++ - 我无法从 QMetaObject 获取方法,方法偏移量和计数相等
我有一个继承自 QObject 并具有 Q_OBJECT 宏的类:
在同一个标题的另一个类中,我创建了该类的一个实例,然后我尝试从“SomeClass”获取所有方法并将其存储在 QMap 中:
...
但这并没有向我显示任何添加的方法,因为方法偏移量等于方法计数,为什么可以?我不明白原因,谢谢任何帮助。
c++ - 有没有办法在不创建该类的实例化的情况下获取 QObject 派生类的类名?
我正在寻找这样的东西:
MyClass::metaObject()->className()
这不起作用,因为在执行此代码时,不存在 MyClass 的实例化。
如果这是可能的,有没有办法获得从 MyClass 派生的所有类的名称?
c++ - 为什么 staticMetaObject.className() 返回父类的类名?
我有一个从“单位”类派生的“默认”类,当我这样做时:
它返回Units
而不是Default
. 这是为什么?我怎样才能解决这个问题?
qt - 如何在函数Qt中获取函数名
当出现问题时,我会尝试记录日志,所以我想像这样编写类信息和函数名:
这个怎么做?
groovy - Groovy 中的元对象协议 (MOP)
我是 Groovy 编程语言的新手,我正在尝试完全理解它的动态特性和功能。我所知道的是,在 Groovy 中以最基本的形式创建的每个类看起来都是这样的(实现 GroovyObject 并扩展 java Object)。
Groovy 对象还包含一个扩展MetaObjectProtocol的MetaClass。正是这个类层次结构提供了一些 Groovy 的动态功能。这包括自省(getProperties、getMethods)或拦截方法(invokeMethod、missingMethod)的能力。
我也了解 Groovy 中可用的不同类型的元编程。这些使您能够在运行时或编译时添加或覆盖功能。
- 运行
- 类别
- Expando / MetaClass / ExpandoMetaClass
- 编译时间
- AST 转换
- 扩展模块
现在,我们可以解决这个问题的实质。当某人或一本书提到 Groovy 中的“元对象协议”时,我们是在谈论特定的类或事物的集合。我很难掌握没有定义或一成不变的东西。我的一本书将其定义为
协议是规则和格式的集合。元对象协议 (MOP) 是 Groovy 运行时系统如何处理方法调用请求以及如何控制中间层的规则集合。协议的“格式”由各自的 API 定义,
我也有 Venkat 的 Programming Groovy 2 书,其中有一个定义此方法查找过程的图表。所以我猜这是我们如何请求方法的规则(至少是 POGO,我理解 POJO 是不同的)。
无论如何,我认为我正在走正确的道路,但我觉得我仍然想念那个“啊哈”的时刻。任何人都可以填写我所缺少的内容吗?或者至少告诉我我在这里的胡言乱语是有道理的:)谢谢!
qt - Qt为什么要在qobject_cast、事件类型等中重新实现RTTI?
为什么 Qt 会费心重新实现相当于自定义 RTTI 系统和它们自己dynamic_cast
的QObject
层次结构、inQEvent
等?
c++ - 在创建 QApplication 之前可以使用 Qt 元类型系统吗?
每当我需要在 Qt 元对象系统中注册一个类型时,我都会使用以下代码:
*.h 文件
*.cpp 文件
这样,在 main() 函数启动之前,我就以所有可能的方式注册了 MyType。所以,问题是
1) 整个 Qt MetaObject 系统是否需要一个 QCoreApplication 的实例?也许我的代码很巧合?
2)有什么好的解决方案不涉及我丑陋的拐杖(即文员类)吗?
java - 如何确定创建的元对象的数量和类型?
据我所见,元对象的类型为:Type-Info
Data-Info
和ObjectCreator
.
在 Java 应用程序中,如何确定创建的元对象的数量和类型?
以下面的示例代码为例:
类型信息:Dtest 对象、类对象
数据信息:整数对象aPublicInt
、整数对象aPrivateInt
、空对象OpD1
、字符串对象OpD2
ObjectCreator Dtest
这个对吗 ?
谁能向我解释一下元对象之间有什么联系?