異なるタイプのアイテムをサポートする配列を使用してスタックを実装する方法。たとえば、文字、整数、浮動小数点数、倍精度浮動小数点数を操作する必要があります。
void
ポインタを使用して実装しました。以下はC
実装です。
void push( void** stack, int* top, void* data, size_t size )
{
unsigned i;
++*top;
stack[*top] = malloc( size );
for( i = 0; i < size; ++i )
( (char*)stack[*top] )[i] = ( (char*)data )[i];
}
int main()
{
void* stack[10];
int top = -1, data = 10;
char ch = 'a';
push( stack, &top, (void*)&data, sizeof( int ) );
push( stack, &top, (void*)&ch, sizeof( char ) );
printf( "%d ", *(int*)stack[0] );
printf( "%c ", *(char*)stack[1] );
return 0;
}
コードは私にとってはうまく機能します。
上記の実装の問題点は、データの型を事前に知っておく必要があることです。
操作するデータの型に関する事前情報を知らずに実装する方法はありますか [ C では不可能であることはわかっています。C++ で実行できますか? はいの場合、どのように? ]?