Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: (C++) Передать тип как параметр  (Прочитано 1414 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн [DarkNet]Alpha

  • Автор темы
  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
(C++) Передать тип как параметр
« : 08 Июня 2012, 03:50:29 »
Имеется вот такой кусок кода.

case 's': // short
{
// Запись размера параметра.
sizeBuf = sizeof(short);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);

// Запись самого параметра.
short paramBuf = va_arg(args, short);
memcpy(curParamCell, &paramBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}

case 'i': // int
{
// Запись размера параметра.
sizeBuf = sizeof(int);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);

// Запись самого параметра.
int paramBuf = va_arg(args, int);
memcpy(curParamCell, &paramBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}

case 'f': // float
{
// Запись размера параметра.
sizeBuf = sizeof(float);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);

// Запись самого параметра.
float paramBuf = va_arg(args, float);
memcpy(curParamCell, &paramBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}

Как вы можете заметить, отличаются части под case'ами очень незначительно, можно было бы сделать функцию. Но всё упирается в моё незнание, как передать тип в качестве параметра. Подскажите, пожалуйста.

andrey_p

  • Гость
Re: (C++) Передать тип как параметр
« Ответ #1 : 08 Июня 2012, 07:02:08 »
По-моему только шаблоны использовать.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: (C++) Передать тип как параметр
« Ответ #2 : 08 Июня 2012, 12:33:06 »
их и надо использовать

 

Страница сгенерирована за 0.045 секунд. Запросов: 25.