Hello to all, in an approach to porting from Solaris to Linux encountered several errors of the art: make -f mymakegnu1 HCSmain g++ -g -w -v HCSmain.cc -o HCSmain Reading specs from /usr/gnu/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/specs Configured with: ./configure --prefix=/usr/gnu Thread model: posix gcc version 3.2.1 /usr/gnu/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ HCSmain.cc -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -quiet -dumpbase HCSmain.cc -g -w -version -o /tmp/cceWKMfc.s GNU CPP version 3.2.1 (cpplib) (i386 Linux/ELF) GNU C++ version 3.2.1 (i686-pc-linux-gnu) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.3 2.96-110). ignoring nonexistent directory "/usr/gnu/i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/gnu/include/c++/3.2.1 /usr/gnu/include/c++/3.2.1/i686-pc-linux-gnu /usr/gnu/include/c++/3.2.1/backward /usr/local/include /usr/gnu/include /usr/gnu/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include /usr/include End of search list. In file included from system.h:12, from mobilestation.h:12, from mobilestation.cc:1, from HCSmain.cc:20: intraHO.h: In constructor `intraHO::intraHO(Microlayer&, Macrolayer&)': intraHO.h:94: no matching function for call to `HOfailure<intraHO>:: setHOexeFunction(<unknown type>)' HOfailure.h:83: candidates are: void HOfailure<HOType>::setHOexeFunction(void (HOType::*)(Mobilestation&)) [with HOType = intraHO] intraHO.h:95: no matching function for call to `HOfailure<intraHO>:: setHOexeFunction(<unknown type>)' HOfailure.h:83: candidates are: void HOfailure<HOType>::setHOexeFunction(void (HOType::*)(Mobilestation&)) [with HOType = intraHO] intraHO.h:96: no matching function for call to `HOfailure<intraHO>:: setFailureFunction(<unknown type>)' HOfailure.h:89: candidates are: void HOfailure<HOType>::setFailureFunction(void (HOType::*)(Mobilestation&)) [with HOType = intraHO] intraHO.h:97: no matching function for call to `HOfailure<intraHO>:: setFailureFunction(<unknown type>)' HOfailure.h:89: candidates are: void HOfailure<HOType>::setFailureFunction(void (HOType::*)(Mobilestation&)) [with HOType = intraHO] .... For those that are interested to help me following code is included: ### intraHO.h #ifndef intraHO__h #define intraHO__h intraHO__h #include <vector> #include "HOdelay.h" #include "HOfailure_def.h" #include "defResult.h" #include "sct.h" class Mobilestation; class Microlayer; class Macrolayer; class Marker; class intraHO { private: ... void execute_HCS_HO(Mobilestation& aMobile); void execute_intraHO(Mobilestation& aMobile); void failure_HCS_HO(Mobilestation& aMobile); void failure_intraHO(Mobilestation& aMobile); ... }; inline intraHO::intraHO(Microlayer& aMicrolayer, Macrolayer& aMacrolayer) : micro_ref(aMicrolayer), macro_ref(aMacrolayer), intraHOfailure(this), intraHCSfailure(this), dropOnHCS(false) { intraHOfailure.setHOexeFunction(execute_intraHO); intraHCSfailure.setHOexeFunction(execute_HCS_HO); intraHOfailure.setFailureFunction(failure_intraHO); intraHCSfailure.setFailureFunction(failure_HCS_HO); ... } #### HO_failure_def.h #ifndef HOfailure_def__h #define HOfailure_def__h HOfailure_def__h #include "HOfailure.h" template <class HOType> void HOfailure<HOType>::exeHO(Mobilestation& aMobile) { if(IsOn && !static_cast<bool>(FailureDecision())) { ++failedHOperHOStep; ++failedHO; if(aMobile.get_owner()->get_ref()) { ++failedHOperHOStepRef; ++failedHORef; } (HOptr->*atfailure)(aMobile); } else { ++notfailedHO; if(aMobile.get_owner()->get_ref()) ++notfailedHORef; (HOptr->*executeHO)(aMobile); } } #endif // HOfailure_def__h ####HO_failure.h #ifndef HOfailure__h #define HOfailure__h HOfailure__h #include <vector> #include "sudrand.h" #include "random_select.h" #include "HOfailure.h" class Mobilestation; template <class HOType> class HOfailure { private: HOType* const HOptr; Sudrand* RNG; RandomSelect FailureDecision; void (HOType::*executeHO)(Mobilestation&); void (HOType::*atfailure)(Mobilestation&); ... public: HOfailure(HOType* const); ~HOfailure(); void setHOexeFunction(void (HOType::*fp)(Mobilestation&)); void setFailureFunction(void (HOType::*fp)(Mobilestation&)); ... }; template<class HOType> inline void HOfailure<HOType>::setHOexeFunction(void (HOType::*fp)(Mobilestation&)) { executeHO = fp; } template<class HOType> inline void HOfailure<HOType>::setFailureFunction(void (HOType::*fp)(Mobilestation&)) { atfailure = fp; } I'm trying to substitute the private part in class intraHO.h by void (intraHO::*execute_HCS_HO)(Mobilestation& aMobile); void (intraHO::*execute_intraHO)(Mobilestation& aMobile); void (intraHO::*failure_HCS_HO)(Mobilestation& aMobile); void (intraHO::*failure_intraHO)(Mobilestation& aMobile); what produces the appropriating errors in intraHO.cc I'm not sure if that is the right way to define a pointer to member function because on Solaris it compiles without problems. Or there is another reason to overcome the problem. Maybe is a kind of error due to bad style programming ? Regards, Iavor.