We've got a bunch of inheritance code that does not support Unicode, so in our code we use a transitional pattern To move the function to the .inl
file, change char
to CHAR_TYPE
, and then wrap it like this:
#define CHAR_TYPE wchar_t #define STRING_TYPE std :: wstring #define MyFunctionName MyFunctionNameW #include "MyFunction.inl" #undef CHAR_TYPE #define CHAR_TYPE Characters #undef STRING_TYPE #define STRING_TYPE std :: string #undef myFunctionName #define MyFunctionName MyFunctionNameA #include "MyFunction.inl" ... where MyFunction.inl
then defines MyFunctionName
, using the macro to generate both 'A' Version and a 'W' version.
This is icky, but unfortunately it is necessary unless we get all the code changed to support Unicode.
Is there any alternative way I can do this with templates? I think something good would be like the following:
typedef MyFunctionName & lt; Wchar_t, std :: wstring & gt; MyFunctionNameW typedef MyFunctionName & lt; Char, std :: string & gt; My function name << / code>
Is this possible?
Roger Pattay is absolutely correct about the interface, do not bother you with A and W suffix needed. However, it still leaves the problem of implementation as you thought, the templates are the right solution and since you do not need different names, you can leave type-pff. You now have
templates & lt; Typename TSTRING & gt; Zero MyFunctionName (TSTRING const & amp;);
No comments:
Post a Comment