Forward reference to enum nested in a class

HOSOKAWA Kenchi hskwk at inter7.jp
Tue Nov 6 08:39:46 PST 2007


Jarrett Billingsley Wrote:

> "HOSOKAWA Kenchi" <hskwk at inter7.jp> wrote in message 
> news:fghd88$2eql$1 at digitalmars.com...
> > Dear Everyone,
> >
> > I have problem on reference to enum nested in a class from template 
> > difinition.
> >
> >
> > class Foo
> > {
> > enum FooEnum {}
> > }
> > enum GlobalEnum {}
> >
> > class BarA(Foo.FooEnum T) {} // Error, Foo.FooEnum is forward referenced
> > class BarB(T : GlobalEnum){} // OK
> > class BarC
> > {
> > FooEnum t; // OK
> > }
> >
> >
> > I want to specialize class template BarA in each conditions listed in 
> > Foo.FooEnum closely related with class Foo.
> > This trial, however, failed because of forward reference to Foo.FooEnum 
> > from BarA.
> > I have avoided this problem in this way:
> >
> >
> > enum FooEnum {}
> > class Foo
> > {
> > alias .FooEnum FooEnum;
> > }
> > class BarD(Image.FooEnum T) {}
> >
> >
> > Please let me know the way to resolve this probrem.
> > I have no idea whether this problem should be avoided by such way or 
> > another.
> 
> It's a bug that's been in the language as long as I can remember.  Walter 
> deems it "too difficult to fix with too little reward."  BS, I say. 
> 
> 

Thank you very much for the information.
Fortunately I have a alternative solution written above, so I won't care of this problem.

again, thanks.



More information about the Digitalmars-d mailing list