class Namespace::Class;
Why do I have to do this?:
namespace Namespace {
class Class;
}
Using VC++ 8.0, the compiler issues:
error C2653: 'Namespace' : is not a class or namespace name
I assume that the problem here is that the compiler cannot tell whether Namespace
is a class or a namespace? But why does this matter since it's just a forward declaration?
Is there another way to forward-declare a class defined in some namespace? The syntax above feels like I'm "reopening" the namespace and extending its definition. What if Class
were not actually defined in Namespace
? Would this result in an error at some point?