неверное использование typedef? - PullRequest
1 голос
/ 21 июля 2010

Чтобы сэкономить место в моем коде, я сделал это typedef:

typedef clients.members.at(selectedTab) currentMember;

однако g ++ выдает мне эту ошибку:

error: expected initializer before '.' token

Я полагаю, что неправильно использую typedef, поскольку clients.members.at(selectedTab) - это вызов функции, а не тип. Есть ли способ сделать то, что я пытаюсь сделать здесь?

Ответы [ 3 ]

5 голосов
/ 21 июля 2010

Если используется локально-функциональная функция и ни clients.members, ни selectedTab не изменяются между ее использованием, просто используйте ссылки. E.g.:

Member& currentMember = clients.members.at(selectedTab);
currentMember.foo();
currentMember.bar();
3 голосов
/ 21 июля 2010

Кажется, вы пытаетесь создать макрос.

#define currentMember clients.members.at(selectedTab)

Хотя в зависимости от того, как он используется, простая функция может быть намного лучше.

1 голос
/ 21 июля 2010

В C ++ 0x вы можете сделать

decltype(clients.members.at(selectedTab)) currentMember(clients.members.at(selectedTab));

Однако то, что вы делаете, принципиально невозможно. Вы пытаетесь получить значение и сделать его типом. Это просто не выполнимо. Рассмотрим следующий код:

typedef clients.members.at(selectedTab) currentMember;
currentMember a;

Что это такое и что оно делает? Тебе придется объяснить больше, чего ты хочешь.

...