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
Language: C++
Expertise: Intermediate
Jul 23, 1998

Forward Declarations

There are circumstances in which classes refer to one another:
 
//file: bank.h
class Report{
public:
void Output(const Account& account); // compile time error; class Account is not declared yet
};
class Account {
public:
void Show() {Report::Output(*this);}
};
However, an attempt to compile this header file will cause compile time errors, since the compiler does not recognize the symbol Account as a class name when class Report is compiled. Even if we re-locate the declaration of class Account and place it before class Report, we'll encounter the same problem: class Report is referred to from Account. For that purpose, forward declarations are required. A forward declaration instructs the compiler to hold off reporting errors until the entire source file has been fully scanned:
 
//file: bank.h
class Acount; //forward declaration
class Report{
public:
void Output(const Account& account); //fine: Account is known to be a not-yet defined class
};
class Account {
Report rep;
public:
void Show() {Report::Output(*this);}
};
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