M
mathieu
Let's try again,
Hi there,
I am looking for a trick to avoid maintaining the 'Create' function
as describe below. All it does is a simple template instantiation, are
there any trick which would avoid having to maintain this 'Create' as
the number of enum grows ?
Thanks
#include <string.h>
typedef enum {
TYPE1,
TYPE2
} TYPES;
class type1 {};
class type2 {};
template <int T> struct Factory;
template <> struct Factory<TYPE1> { typedef type1 Type; };
template <> struct Factory<TYPE2> { typedef type2 Type; };
template <int N>
typename Factory<N>::Type* Create()
{
return new typename Factory<N>::Type;
}
int main()
{
const char *file[] = {
"TYPE2",
"TYPE1",
};
const unsigned int n = sizeof(file) / sizeof(*file);
for(unsigned int i = 0; i < n; ++i)
{
if( strcmp(file, "TYPE1" ) == 0 )
{
type1 *t = Create<TYPE1>();
}
else if( strcmp(file, "TYPE2" ) == 0 )
{
type2 *t = Create<TYPE2>();
}
}
return 0;
}
Hi there,
I am looking for a trick to avoid maintaining the 'Create' function
as describe below. All it does is a simple template instantiation, are
there any trick which would avoid having to maintain this 'Create' as
the number of enum grows ?
Thanks
#include <string.h>
typedef enum {
TYPE1,
TYPE2
} TYPES;
class type1 {};
class type2 {};
template <int T> struct Factory;
template <> struct Factory<TYPE1> { typedef type1 Type; };
template <> struct Factory<TYPE2> { typedef type2 Type; };
template <int N>
typename Factory<N>::Type* Create()
{
return new typename Factory<N>::Type;
}
int main()
{
const char *file[] = {
"TYPE2",
"TYPE1",
};
const unsigned int n = sizeof(file) / sizeof(*file);
for(unsigned int i = 0; i < n; ++i)
{
if( strcmp(file, "TYPE1" ) == 0 )
{
type1 *t = Create<TYPE1>();
}
else if( strcmp(file, "TYPE2" ) == 0 )
{
type2 *t = Create<TYPE2>();
}
}
return 0;
}