问题标签 [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.

0 投票
2 回答
204 浏览

python - 在python中,如果我将一个变量分配给一个方法,这意味着什么?

阅读 CherryPy 教程我遇到了这个

那是什么意思?在方法索引的局部范围内暴露了一个变量?如果是这样,我可以改变暴露的价值吗?我认为这与 python 的 MetaObject 协议将类定义公开为对象本身有关。

0 投票
1 回答
2672 浏览

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])意思?额外的括号是什么(*)意思,以及如何解释这段代码?

0 投票
2 回答
3907 浏览

c++ - 我无法从 QMetaObject 获取方法,方法偏移量和计数相等

我有一个继承自 QObject 并具有 Q_OBJECT 宏的类:

在同一个标​​题的另一个类中,我创建了该类的一个实例,然后我尝试从“SomeClass”获取所有方法并将其存储在 QMap 中:

...

但这并没有向我显示任何添加的方法,因为方法偏移量等于方法计数,为什么可以?我不明白原因,谢谢任何帮助。

0 投票
2 回答
7018 浏览

c++ - 有没有办法在不创建该类的实例化的情况下获取 QObject 派生类的类名?

我正在寻找这样的东西:

MyClass::metaObject()->className()

这不起作用,因为在执行此代码时,不存在 MyClass 的实例化。

如果这是可能的,有没有办法获得从 MyClass 派生的所有类的名称?

0 投票
1 回答
384 浏览

c++ - 为什么 staticMetaObject.className() 返回父类的类名?

我有一个从“单位”类派生的“默认”类,当我这样做时:

它返回Units而不是Default. 这是为什么?我怎样才能解决这个问题?

0 投票
2 回答
11856 浏览

qt - 如何在函数Qt中获取函数名

当出现问题时,我会尝试记录日志,所以我想像这样编写类信息和函数名:

这个怎么做?

0 投票
1 回答
3036 浏览

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 是不同的)。

在此处输入图像描述

无论如何,我认为我正在走正确的道路,但我觉得我仍然想念那个“啊哈”的时刻。任何人都可以填写我所缺少的内容吗?或者至少告诉我我在这里的胡言乱语是有道理的:)谢谢!

0 投票
1 回答
884 浏览

qt - Qt为什么要在qobject_cast、事件类型等中重新实现RTTI?

为什么 Qt 会费心重新实现相当于自定义 RTTI 系统和它们自己dynamic_castQObject层次结构、inQEvent等?

0 投票
1 回答
133 浏览

c++ - 在创建 QApplication 之前可以使用 Qt 元类型系统吗?

每当我需要在 Qt 元对象系统中注册一个类型时,我都会使用以下代码:

*.h 文件

*.cpp 文件

这样,在 main() 函数启动之前,我就以所有可能的方式注册了 MyType。所以,问题是

1) 整个 Qt MetaObject 系统是否需要一个 QCoreApplication 的实例?也许我的代码很巧合?

2)有什么好的解决方案不涉及我丑陋的拐杖(即文员类)吗?

0 投票
0 回答
52 浏览

java - 如何确定创建的元对象的数量和类型?

据我所见,元对象的类型为:Type-Info Data-InfoObjectCreator.
在 Java 应用程序中,如何确定创建的元对象的数量和类型?
以下面的示例代码为例:

类型信息:Dtest 对象、类对象
数据信息:整数对象aPublicInt、整数对象aPrivateInt、空对象OpD1、字符串对象OpD2
ObjectCreator Dtest

这个对吗 ?

谁能向我解释一下元对象之间有什么联系?