Hi Eljay, Yes, I was not building the libbg.so myself. I guess it was built with GCC 3.4.3 I am triying to rebuild the whole package with GCC 4.1.1 but again the scope problem is occuring and this time with 'EBUSY' error flag. error: 'EBUSY' was not declared in this scope on this line: if(pthread_mutex_trylock(&lock) != EBUSY) Since, EBUSY is standard error flag and there shouldn't be a problem with its scope. What could be wrong here? Divy. ---------Included Message---------- >Date: 14-Feb-2007 14:59:34 -0500 >From: "John Love-Jensen" <eljay@xxxxxxxxx> >To: "Divy Kanungo" <divyk@xxxxxxxxxxxxxx>, "MSX to GCC" <gcc- help@xxxxxxxxxxx> >Subject: Re: error: 'comp' was not declared in this scope > >Hi Divy, > >> So, is it that the new gcc version does not allow directly using the protected >variabled declared in parent class? > >I may be mistaken, but I think that the issue has to do with two-phased >lookup. GCC 4.x implements two-phased lookup, as per ISO 14882. > >You could also have accessed c by: > >this->c > >...or... > >std::priority_queue< T, std::vector<T>, PLess<T> >::c > >...but I find the using statement to be the quickest & best solution. > >> (because that worked fine when I had gcc 3.4.3) > >GCC 3.4.3 did not implement two-phased lookup. (Or perhaps it was just that >GCC 3.4.3 did not fully implement two-phased lookup.) > >I'm not sure of all the intricate details between... >ADL (argument-dependent name lookup; aka Koenig lookup) >OL (ordinary name lookup) >FNI (friend name injection) >two-phase lookup (aka non-dependent lookup) > >From <http://safari5.bvdep.com/0201734842/glossary1> ... > >two-phase lookup >The name lookup mechanism used for names in template. The "two phases" are >(1) the phase during which a template definition is first encountered by a >compiler, and (2) the instantiation of a template. Nondependent names are >looked up only in the first phase, but during this first phase nondependent >base classes are not considered. Dependent names with a scope qualifier (::) >are looked up only in the second phase. Dependent names without a scope >qualifier may be looked up in both phases, but in the second phase only >argument-dependent lookup is performed. > >> Also now I have new issues when I compile the program. I get the following >linker errors: > >That's weird. It almost looks like you are linking with gcc instead of g++. > >How are you building libbg.so with GCC 4.x? > >Or if you are not building libbg.so yourself, it then looks like libbg.so >was not built with GCC 4.x. > >HTH, >--Eljay > > > ---------End of Included Message----------