compilation error: cannot be overloaded

Discussion in 'C++' started by prakash.mirji@gmail.com, Apr 20, 2007.

  1. Guest

    Hello,

    I am trying to compile C++ code which uses rogue wave 9.0 classes on
    RHEL
    4.0. I use gnu g++ compiler to compile the code.
    Compiler is not able to match the right type of parameters to overload
    the
    methods of RW classes.
    Below are the two methods among others in the rw/ep_scntn.h header
    file
    where compiler says cannot be overloaded.

    RWBoolean contains(RWBoolean(*fn)(const_value,void*),void* x) const;
    RWBoolean contains(RWBoolean(*fn)(value_type,void*),void* x) const
    { return base_type::contains(fn,x); }

    Compiler is treating the first parameter in above methods as same.

    When I issue a make command from one of our c++ module, I get below
    error

    /usr/bin/g++ -g -fpic -D_POSIX_SOURCE -DTRACING -D__EXTENSIONS__ -
    D__RWCOMPILER_H__
    -D_REENTRANT -D_RWCONFIG=8s -D_RWCONFIG_12d -D_RWSTDDEBUG -
    DRWDEBUG -c
    TrackListMap.C -I../inc -I/psalms/common/inc -I/psalms/common/Map/inc -
    I/psalms/common/Scan/inc
    -I/opt/ossasn1/linux-glibc2.2.trial/8.2.0-betaA/include -I/psalms/
    common/ASNFw2/sep/inc
    -I/psalms/common/DbFw/inc -I/psalms/common/DbFwMgr/inc -I/psalms/
    common/Time/inc
    -I/psalms/common/LoggingFw/inc -I/psalms/common/ExcepFw/inc -I/psalms/
    common/ConfigFw/inc
    -I/psalms/common/SdtArm/inc -I/opt/RogueWave/SourcePro -o
    TrackListMap.o

    In file included from ../inc/TrackListMap.h:18,
    from TrackListMap.C:15:
    /opt/RogueWave/SourcePro/rw/ep_scntn.h: In instantiation of
    `RW_PCntnr<std::vector<const RWCString*, std::allocator<const
    RWCString*> >,
    RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >,

    const RWCString>':
    /opt/RogueWave/SourcePro/rw/ep_seq.h:50: instantiated from
    `RW_PSeq<std::vector<const RWCString*, std::allocator<const
    RWCString*> >,
    RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >,

    const RWCString>'
    /opt/RogueWave/SourcePro/rw/tpordvec.h:65: instantiated from
    `RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >'

    /psalms/common/Map/inc/MapFile.h:27: instantiated from here
    /opt/RogueWave/SourcePro/rw/ep_scntn.h:92: error: `RWBoolean
    RW_PCntnr<StdColl, RWColl, T>::contains(RWBoolean (*)(typename
    StdColl::value_type, void*), void*) const [with StdColl =
    std::vector<const
    RWCString*, std::allocator<const RWCString*> >, RWColl =
    RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >, T =

    const RWCString]' and `RWBoolean RW_PCntnr<StdColl, RWColl,
    T>::contains(RWBoolean (*)(const T*, void*), void*) const [with
    StdColl =
    std::vector<const RWCString*, std::allocator<const RWCString*> >,
    RWColl =
    RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >, T =

    const RWCString]' cannot be overloaded
    /opt/RogueWave/SourcePro/rw/ep_scntn.cc:96: error: `typename
    RW_PCntnr<StdColl, RWColl, T>::value_type RW_PCntnr<StdColl, RWColl,
    T>::find(RWBoolean (*)(typename StdColl::value_type, void*), void*)
    const
    [with StdColl = std::vector<const RWCString*, std::allocator<const
    RWCString*> >, RWColl = RWTPtrOrderedVector<const RWCString,
    std::allocator<const RWCString*> >, T = const RWCString]' and
    `typename
    RW_PCntnr<StdColl, RWColl, T>::value_type RW_PCntnr<StdColl, RWColl,
    T>::find(RWBoolean (*)(const T*, void*), void*) const [with StdColl =
    std::vector<const RWCString*, std::allocator<const RWCString*> >,
    RWColl =
    RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
    >, T =

    const RWCString]' cannot be overloaded
    ..........................
    ...........................


    any idea why we get above error. and how to fix the same.

    Thanks & Regards,
    Prakash
    , Apr 20, 2007
    #1
    1. Advertising

  2. <> wrote in message
    news:...
    : I am trying to compile C++ code which uses rogue wave 9.0 classes on
    : RHEL
    : 4.0. I use gnu g++ compiler to compile the code.
    : Compiler is not able to match the right type of parameters to overload
    : the
    : methods of RW classes.
    : Below are the two methods among others in the rw/ep_scntn.h header
    : file
    : where compiler says cannot be overloaded.
    :
    : RWBoolean contains(RWBoolean(*fn)(const_value,void*),void* x) const;
    : RWBoolean contains(RWBoolean(*fn)(value_type,void*),void* x) const
    : { return base_type::contains(fn,x); }
    :
    : Compiler is treating the first parameter in above methods as same.
    Hmm, just making a best guess from this short code fragment:
    Unless const_value and value_type are reference-types, the above
    overload is indeed illegal.
    The const-ness of a by-value parameter does not affect the
    signature of a function. That is, the two following declarations
    are not overloads, but refer to the exact same function:
    void f( int a );
    void f( int const a );

    : any idea why we get above error. and how to fix the same.

    Concretely, the following would be valid:
    RWBoolean contains(RWBoolean(*fn)(const_value&,void*),void* x) const;
    RWBoolean contains(RWBoolean(*fn)(value_type&,void*),void* x) const

    [ Assuming typedef T value_type; typedef T const const_value; ]

    If you need further guidance, please try to extract a
    self-contained code sample that reproduces the error,
    or ask on a forum dedicated to the Rogue Wave libraries...

    I hope this helps,
    Ivan
    --
    http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
    Brainbench MVP for C++ <> http://www.brainbench.com
    Ivan Vecerina, Apr 20, 2007
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Brad Eck
    Replies:
    20
    Views:
    46,116
    Alex Vinokur
    Oct 30, 2004
  2. Gavin
    Replies:
    3
    Views:
    455
    Chris Uppal
    Mar 28, 2007
  3. John
    Replies:
    9
    Views:
    1,919
  4. C__chp
    Replies:
    4
    Views:
    486
    Puppet_Sock
    Feb 15, 2008
  5. , India
    Replies:
    6
    Views:
    385
    , India
    Nov 15, 2010
Loading...

Share This Page