У меня есть две программы, которые общаются через D-Bus. В одном из них есть функция, которая принимает два параметра, а именно const char* data
и int size
, а в другом у меня есть функция, которая возвращает значение типа unsigned char
. Я помещаю вызов функции в первую программу, подобную этой function((char*)program2->function().value(), 1)
, но получаю предупреждение приведение к указателю из целого числа другого размера [-Wint-to-pointer-cast]. как мне разрешить это предупреждение? также я использую библиотеки Qt.
РЕДАКТИРОВАТЬ:
на самом деле в функции, которая принимает const char*
и int
, я добавляю данные к QByteArray
, который принимает const char*
и размер типа int
в его конструкторе, как это предусмотрено Qt, а другая программа должна возвращать число в диапазоне 0-255, следовательно unsinged char
. Если то, что я делаю, неправильно, как лучше всего получить желаемый результат?
Также вызов функции program2-> вызывает следующее:
inline QDBusPendingReply<uchar> type()
{
QList<QVariant> argumentList;
return asyncCallWithArgumentList(QLatin1String("type"), argumentList);
}
этот класс имеет функцию с именем value(), которая вызывает:
inline typename Select<0>::Type value() const
{
return argumentAt<0>();
}
ПРИМЕЧАНИЕ: моя основная цель этого вопроса заключалась в том, чтобы найти способ создать ссылку на возвращаемый результат вызова функции, определенной в прокси-классе, а не как преобразовать ее во что-то приемлемое для создания QByteArray
поэтому, пожалуйста, прекратите добавлять несвязанные теги, такие как QByteArray
или QtCore
и т. д.
int
отличается от типаchar *
, поэтому выполняемое вами преобразование не будет иметь никакого смысла. - person Oliver Charlesworth   schedule 02.05.2014unsigned char
иunsigned char*
имеют разный размер. Фактический аргумент1
для параметраint
работает просто отлично. - person Ben Voigt   schedule 02.05.2014auto const p = program2->function();
, а просто(&p, 1)
? - person David Schwartz   schedule 02.05.2014