Re: problem porting my application to new gcc (non-const reference )

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30 March 2011 09:59, Mahmood Naderan wrote:
> Hi all,
> I am trying to port my program to new version of gcc.

Which new version?

> Although it works fine on
> gcc 4.1, I get some compilation errors. For example consider this piece of code:
>
> namespace aux_ {
>   API::conf_object_t * NewObject_stub(API::conf_class_t * aClass, std::string
> const & aName, API::conf_object_t * (&constructor)(API::parse_object_t *) );
> } //namespace aux_

This is a function declaration.

> I get this error:
>
> error: in passing argument 3 of ‘Flexus::Sim::API::conf_object_t*
>    Flexus::Sim::aux_::NewObject_stub(Flexus::Sim::API::conf_class_t*, const
> std::string&, Flexus::Sim::API::conf_object_t*
>
>    (&)(Flexus::Sim::API::parse_object_t*))’

You don't get this error from the declaration, you get this error
where you try to call the function, and you haven't shown the call so
it's difficult to say what the problem is.

> In another part, I have this code:
> typename class_::object_type create(std::string aSimName) {
>       API::conf_object_t * object = aux_::NewObject_stub(
>         const_cast<API::conf_class_t *>( theClass->getSimClass() ), aSimName,
> theClass->constructor);
>
> and get this error:
>
> error: invalid initialization of non-const reference of type
>    ‘Flexus::Sim::API::conf_object_t* (&)(Flexus::Sim::API::parse_object_t*)’
> from a temporary of type
>
>    ‘Flexus::Sim::API::conf_object_t*(Flexus::Sim::API::parse_object_t*)’

What is the type of theClass->constructor ?

Is it a static member function?

Does it help if you change the call to use &theClass->constructor instead?



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux