我们可以通过 D-bus 访问数据成员和指向对象的指针吗?
Posted
技术标签:
【中文标题】我们可以通过 D-bus 访问数据成员和指向对象的指针吗?【英文标题】:Can we access data-members and pointers to objects over the D-bus? 【发布时间】:2012-01-18 05:41:19 【问题描述】:我一直在访问公开的成员函数,对应于通过 D-Bus 公开的对象。有什么方法可以让我访问(公共)数据成员吗?如果有,怎么做?
我也在这里阅读-
[http://www.qtcentre.org/archive/index.php/t-24238.html]
不能通过 D-Bus 传递指针。只是想确认一下。
【问题讨论】:
【参考方案1】:能否访问对象的数据成员取决于它们是声明为public
还是private
。查看头文件中的类(或结构)定义。这是真的,与类映射到 D-Bus 上的某些东西这一事实无关,尽管假设类编写不正确并允许您执行 D-Bus 不支持的事情,在这种情况下,我从提供的信息中无法知道会发生什么。
class DBusThing
int seeBelowMember;
public:
int accessibleMember;
int accessibleMethod(int argument);
private:
int inaccessibleMember;
void someFunc()
DBusThing foo;
int ret = foo.accessibleMethod(5); // legal
foo.accessibleMember=5; // legal
foo.inaccessibleMember=5; // illegal
foo.seeBelowMember=5; // illegal because DBusThing is declared class.
// If DBusThing had been declared struct, seeBelowMember would be accessible.
我判断这门课可能是正确编写的,并且会阻止你尝试不可能的事情。
【讨论】:
是的,我同意无法访问私人成员。我关心的是如何准确地访问公共的。我使用 QDBusMessage::createMethodCall( const QString & service, const QString & path, const QString & interface, const QString & method ) 方法在 Qt-Dbus 上调用方法。在这种情况下,我无法找出如何准确访问数据成员?我想你是在我编辑我的问题之前发布的。无论如何,感谢您的快速回复。 @Amit 我确实在您编辑之前发布过。在堆栈溢出时,这里有一个相当健康的 QT 标签。当您有关于 QT 库的问题时,这样说并使用标签会很有用。以上是关于我们可以通过 D-bus 访问数据成员和指向对象的指针吗?的主要内容,如果未能解决你的问题,请参考以下文章