Можем ли мы получить доступ к элементам данных и указателям на объекты через D-шину?

Я обращался к открытым функциям-членам, соответствующим объекту, открытому через D-Bus. Есть ли способ, с помощью которого я также могу получить доступ к (общедоступным) членам данных? Если да, то как?

Еще я читал здесь-

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

что через D-Bus нельзя передавать указатели. Просто хотел подтвердить то же самое.


person Amit Tomar    schedule 12.12.2011    source источник


Ответы (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.
}

Я считаю вероятным, что класс написан правильно и не позволит вам сделать невозможное.

person 01d55    schedule 12.12.2011
comment
Да, я согласен, что закрытые члены не могут быть доступны. Что меня беспокоит, так это то, как именно получить доступ к общедоступным. Я вызываю методы через Qt-Dbus, используя метод QDBusMessage::createMethodCall (const QString и сервис, const QString и путь, const QString и интерфейс, const QString и метод). Я не могу узнать, как именно получить доступ к элементу данных в этом случае? Я думаю, что вы разместили сообщение до того, как я отредактировал свой вопрос. Спасибо за быстрый ответ, в любом случае. - person Amit Tomar; 12.12.2011
comment
@Amit Я действительно опубликовал сообщение до того, как вы отредактировали. Здесь есть довольно здоровый тег QT при переполнении стека. Если у вас есть вопрос, касающийся библиотек QT, будет полезно сказать об этом и использовать тег. - person 01d55; 12.12.2011