I create generic class. Non-unicode string and unicode string
definitions are placed in generic class body. I am unable to place
them into function body. I will have to create two separate
functions. Both functions behave the same.
First version of function is non-unicode and second version of
function is unicode. Both functions take too much spaces in the
source code. It would be nice to have only one function.
How do I declare local type variable into function body? Local type
variable will be string and wstring. The C++ Compiler will fail to
compile and error message says redefinition sampleText variables.
template< typename A, typename B, typename C >
class Foo
{
public:
Foo() {}
~Foo() {}
void Print( A a, B &b, C &c );
static const A text;
static const A text2;
};
const std::string Foo< std::string, std::ostream, std::istream >::text
=
"Non-unicode --> Type your name: ";
const std::wstring Foo< std::wstring, std::wostream, std::wistream
::text =
L"Unicode --> Type your name: ";
const std::string Foo< std::string, std::ostream, std::istream
::text2 =
"\n\nNon-unicode --> Your name is ";
const std::wstring Foo< std::wstring, std::wostream, std::wistream
::text2 =
L"\n\nUnicode --> Your name is ";
template< typename A, typename B, typename C >
void Foo< A, B, C >::Print( A a, B &b, C &c )
{
A sampleText;
std::string sampleText = ?Non-unicode string?;
std::wstring sampleText = L?Unicode string?; // error redefinition
...
template<typename A ...> void FOO<A,B,C>::Print(...