C++のコードをC言語のコードに変換していますが、C言語のオブジェクトファクトリに相当するパターンはありますか?C++ではなくC言語のオブジェクトファクトリ
次のソースコードを検討してください。パラメータ(int type
)に基づいて、ObjectFactory
()関数は、ペディキュア型の構造体へのvoidポインタを返す必要があります。どのようにして、関数が返った後にポインタを持つことができるような方法で構造体をインスタンス化できますか?
typedef struct {
unsigned int a;
unsigned int b;
unsigned int c;
} CThings ;
typedef struct {
unsigned int d;
unsigned int e;
unsigned int f;
} CPlaces ;
void * ObjectFactory(int type) {
switch(type) {
case 5 : {
return ??? CPlaces ;
break;
}
case 35 : {
return ??? CThings ;
break;
}
default: {
// unknown type
return NULL ;
}
}
return NULL ;
}
int _tmain(int argc, _TCHAR* argv[])
{
void * p = ObjectFactory(5);
// Do soemthing with the pointer.
CPlaces * places = (CPlaces*) p ;
places->d = 5 ;
places->e = 6 ;
places->f = 7 ;
return 0;
}
これは、C++をC言語に変換することは、一見したところ特に不吉なことです。このような明らかに無意味な活動に従事している理由を説明してください。 –
@ AlfP.Steinbach +1:あなたが書いた最高のコメント。 –
'return(void *)new CPlaces();' –