devxlogo

Forward Declarations

Forward Declarations

There are circumstances in which classes refer to one another:

 //file: bank.hclass 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.hclass Acount; //forward declarationclass 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);}};
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist