Эффективный и практичный способ обобщить структурный доступ? - PullRequest
1 голос
/ 24 января 2011

У меня есть следующее:

Struct A {
   char a;
   char b[10];
   int c;
   float d;
}

Struct B {
   float d;
   char b[10];
   char a;
   int c;
   bool e;
}

и я хочу создать универсальную функцию, которая принимает структуру A или B для доступа к таким элементам, как:

void SetD(A a, float f) { a.d = f; }

Будет много разных структур (большинство с одинаковыми элементами) и множество функций для работы с ними.

Я пытаюсь обобщить доступ, поэтому мне не нужно копировать каждый метод в каждую структуру, что приводит к дублированию кода. Не уверен, что instanceof или шаблоны будут лучше здесь. Любые идеи о том, как реализовать это элегантно? Дайте мне знать, если я смогу дать больше разъяснений.

1 Ответ

9 голосов
/ 24 января 2011

Как насчет:

template< typename T > void setD( T &t, float f ) { t.d = f; }

Обратите внимание , что ключевое слово struct является строчным, и для структур требуется точка с запятой ; после закрывающей скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...