Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old April 20th, 2007, 06:05 AM
prakash.mirji@gmail.com
Guest
 
Posts: n/a
Default compilation error: cannot be overloaded

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*>
Quote:
>,
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*>
Quote:
>,
const RWCString>'
/opt/RogueWave/SourcePro/rw/tpordvec.h:65: instantiated from
`RWTPtrOrderedVector<const RWCString, std::allocator<const RWCString*>
Quote:
>'
/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*>
Quote:
>, 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*>
Quote:
>, 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*>
Quote:
>, T =
const RWCString]' cannot be overloaded
..........................
...........................


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

Thanks & Regards,
Prakash

  #2  
Old April 20th, 2007, 08:35 AM
Ivan Vecerina
Guest
 
Posts: n/a
Default Re: compilation error: cannot be overloaded

<prakash.mirji@gmail.comwrote in message
news:1177045337.846037.89710@l77g2000hsb.googlegro ups.com...
: 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

 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles