Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Oct 21, 1999

Forward-Declaring a Namespace Member

Suppose you need to forward-declare class Interest, which is a member of namespace Bank. It would seem that all you need to do is use the class's fully qualified name:
 
  class Bank::Interest;  // error
  void Analyze(Bank::Interest& in);
Alas, the qualified name Bank::Interest will cause a compilation error since the compiler doesn't know that 'Bank' is a namespace. Of course, #including the header file which declares class Bank::Interest will solve this problem but forward-declarations are used when you wish to avoid #including a header file. How do you correctly forward-declare a class that is a namespace member? The solution is simple: you need to open the class's namespace, forward-declare the class in that namespace, and immediately close the namespace:
 
  namespace Bank
  {
    class Interest; /* fwd declaring class Interest,
                           which is a member of namespace 'Bank' */
  }
  void Analyze(Bank::Interest& in);
The example above re-opens namespace Bank (which is defined in another source file already). It then forward-declares class Interest inside that namespace, and immediately closes that namespace. Remember that a forward-declaration is just a declaration, so it doesn't cause any compilation or link "duplicate definition" errors.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date