How to use variant

P. Durante shackan at gmail.com
Mon Jul 9 05:47:23 PDT 2007


Hi,

On 7/9/07, Naveen Verma <ernaveenverma at gmail.com> wrote:
> Hi,
>
> Thanks a lot for your help.
>
> It was easy, but I am still stuck in an issue. In another function which
> return and array of struct and one of the struct member is variant. When I
> call the function from another program. I receive "DBus::Error" , "what():
> unknown type". The interesting part is I did not receive this error if I
> return only structure not the array of structure, or return the array of
> structure without variant as members.
>
> So something is wrong in combination of array and variant. The function
> example which gives and error is as:
>
> std::vector< DBus::Struct<DBus::String, DBus::UInt32,
>              DBus::String, DBus::Variant> >
> CManager::GetParameters(const DBus::String &pto)
> {
>   std::cerr << "Method GetParameters\n";
>
>   DBus::Struct< DBus::String, DBus::UInt32,
>     DBus::String,DBus::Variant > param;
>
>   param._1 = "protocol";
>   param._2 = 1;
>   param._3 = "string";
>
>   // Add the variant
>   DBus::MessageIter i = param._4.writer();
>   i << DBus::String("None");
>
>   std::vector < DBus::Struct< DBus::String, DBus::UInt32,
>     DBus::String,DBus::Variant> > temp;
>   temp.push_back(param);
>
>   return temp;
> }
>
> In this function if I removed variant from the structure or remove vector
> and just keep struct then it works fine, otherwise the remote caller
> function terminate with "DBus::Error" , "what(): unknown type" error.
>
> Could anyone please help me to figure out the problem?
>
> -Thanks & Regards
> Naveen
>
>
sorry, it's been just fixed in the trunk

thanks and best regards,
Paolo


More information about the dbus mailing list