【问题标题】:Can we access data-members and pointers to objects over the D-bus?我们可以通过 D-bus 访问数据成员和指向对象的指针吗?
【发布时间】:2012-01-18 05:41:19
【问题描述】:

我一直在访问公开的成员函数,对应于通过 D-Bus 公开的对象。有什么方法可以让我访问(公共)数据成员吗?如果有,怎么做?

我也在这里阅读-

[http://www.qtcentre.org/archive/index.php/t-24238.html]

不能通过 D-Bus 传递指针。只是想确认一下。

【问题讨论】:

    标签: c++ c qt dbus


    【解决方案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 库的问题时,这样说并使用标签会很有用。
    猜你喜欢
    • 2012-04-12
    • 2014-04-29
    • 2014-02-19
    • 2011-04-06
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多