Инициализация структур в стиле c - PullRequest
2 голосов
/ 23 января 2012

У меня есть заголовок, который определяет структуры стиля c, которые должны быть переданы через границу в c ++ DLL.Этот заголовок и DLL могут быть использованы приложениями c ++, java и c.Я хочу каким-то образом инициализировать эти структуры, что позволит пользователю указать подмножество параметров, а остальным будут заданы значения по умолчанию.

Я думал о создании ряда функций инициализации в заголовке, которые бывозьмите ссылку на структуру, которую они будут инициализировать вместе с параметрами для всех элементов, которые могут быть установлены.«Инициализирующие» функции будут использовать перегрузку (на основе переданной ссылки на структуру), чтобы гарантировать, что была вызвана правильная.Я также планировал использовать параметры по умолчанию для установки значений по умолчанию.Полагаю, функции должны быть глобальными.

Это хороший подход?Есть ли лучшая альтернатива?спасибо

1 Ответ

6 голосов
/ 23 января 2012

Вы можете добавить функцию, которая возвращает инициализированную структуру по умолчанию:

struct abc
{
  int a;
  float b;
  char c;
};

abc GetDefaultAbc()
{
  const abc def = { 1,2.0,3 };
  return def;
};
...