Click here to Skip to main content
15,886,110 members
Articles / Programming Languages / C++

C++ Static Initialization Order: A New Solution to an Old Problem

Rate me:
Please Sign up or sign in to vote.
4.03/5 (8 votes)
26 May 2007CPOL8 min read 81.8K   178   28  
Presents an easy method to control order of initialization for static objects
//SafeB.cpp

#include "SafeA.h"
#include "SafeB.h"

//Pull in instance of CSafeA
extern Implement_pseudo_static( CSafeA ) s_SafeA;

//Safe Static instance initialisation
Implement_pseudo_static( CSafeB ) s_SafeB;

//CSafeB default constructor depends on s_SafeA
//This dependency could be much more complex and 
//difficult to determine in a real aplication
CSafeB::CSafeB()
{
	OutputDebugString( _T("SafeB has now been constructed\n" ) );
	s_SafeA->Squawk();	
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
CEO Querysoft Ltd
United Kingdom United Kingdom
I'm a UK based software engineering contractor, CEO of Querysoft Ltd, a candidate and activist for the UK Independence Party and occasionally I get time look at Code Project.

Comments and Discussions