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(RWBool ean(*fn)(const_ value,void*),vo id* x) const;
RWBoolean contains(RWBool ean(*fn)(value_ type,void*),voi d* x) const
{ return base_type::cont ains(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*,
RWTPtrOrderedVe ctor<const RWCString, std::allocator< const RWCString*>
>,const RWCString>':
/opt/RogueWave/SourcePro/rw/ep_seq.h:50: instantiated from
`RW_PSeq<std::v ector<const RWCString*, std::allocator< const
RWCString*,
RWTPtrOrderedVe ctor<const RWCString, std::allocator< const RWCString*>
>,const RWCString>'
/opt/RogueWave/SourcePro/rw/tpordvec.h:65: instantiated from
`RWTPtrOrderedV ector<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<StdCo ll, RWColl, T>::contains(RW Boolean (*)(typename
StdColl::value_ type, void*), void*) const [with StdColl =
std::vector<con st
RWCString*, std::allocator< const RWCString*, RWColl =
RWTPtrOrderedVe ctor<const RWCString, std::allocator< const RWCString*>
>, T =const RWCString]' and `RWBoolean RW_PCntnr<StdCo ll, RWColl,
T>::contains(RW Boolean (*)(const T*, void*), void*) const [with
StdColl =
std::vector<con st RWCString*, std::allocator< const RWCString*,
RWColl =
RWTPtrOrderedVe ctor<const RWCString, std::allocator< const RWCString*>
>, T =const RWCString]' cannot be overloaded
/opt/RogueWave/SourcePro/rw/ep_scntn.cc:96: error: `typename
RW_PCntnr<StdCo ll, RWColl, T>::value_type RW_PCntnr<StdCo ll, RWColl,
T>::find(RWBool ean (*)(typename StdColl::value_ type, void*), void*)
const
[with StdColl = std::vector<con st RWCString*, std::allocator< const
RWCString*, RWColl = RWTPtrOrderedVe ctor<const RWCString,
std::allocator< const RWCString*, T = const RWCString]' and
`typename
RW_PCntnr<StdCo ll, RWColl, T>::value_type RW_PCntnr<StdCo ll, RWColl,
T>::find(RWBool ean (*)(const T*, void*), void*) const [with StdColl =
std::vector<con st RWCString*, std::allocator< const RWCString*,
RWColl =
RWTPtrOrderedVe ctor<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