This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Visibility problem with nested classes


I'm using egcs-1.0.2 "gcc version egcs-2.90.27 980315 (egcs-1.0.2 release)"
on a Sparc host running Solaris-2.5.1 and I noticed a problem: following
code produces an error:


#include <iostream.h>

class foo {
public:
	class bar;
	int func(bar *);
	class bar {
		int st;
	public:
		bar(){st=12;}
		~bar(){}
		friend int foo::func(bar *);
	};
	foo(){}
	~foo(){}
};

int foo::func(bar *b) {
	return b->st;
}

int main() {
	foo x;
	foo::bar y;

	cout << x.func(&y) << endl;

	return(0);
}

the error generated:
bug2.8.0-1.cc:13: member `foo::func(foo::bar *)' declared as friend before type `foo' defined
bug2.8.0-1.cc: In method `int foo::func(class foo::bar *)':
bug2.8.0-1.cc:20: member `st' is a private member of class `foo::bar'

############################
This generates the same behaviour with a linux-gnulibc1 host
and again the same behaviour with gcc-2.8.0 and gcc-2.8.1 releases.

F. Michel
(sxthree@penfeld.tls.mms.fr)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]