Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C++

Passing a const character * as a template argument

4.20/5 (2 votes)
3 Jul 2011CPOL 5.3K  
Since you must pass the string at each instanciation points, it is useless to make a template argument for it.templatestruct CVHDialogTmpl{ CVHDialogTmpl(const char *ptr_) : ptr(ptr_) { } INT_PTR DoModal() { return t.DoModal(ptr); } Ty t; ...
Since you must pass the string at each instanciation points, it is useless to make a template argument for it.

template<class>
struct CVHDialogTmpl
{     
	CVHDialogTmpl(const char *ptr_) : ptr(ptr_)
	{
	}     
 
	INT_PTR DoModal()
	{
		return t.DoModal(ptr);
	}
	
	Ty t;
        const char *ptr;
}; 


We can reuse VHRes class as defined in the original text and uses the class like this.

CVHDialogTmpl<cxmldlgprjdlg> dlg(VHRes::name);


This will works with any string including those that are built at run-time. It will be less intensive of the compiler and the generated code will probably be more efficient (memory usage).

License

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