无效使用typedef?

时间:2010-07-21 18:26:43

标签: c++ typedef

为了在我的代码中节省一些空间,我做了这个typedef:

typedef clients.members.at(selectedTab) currentMember;

然而,g ++给了我这个错误:

error: expected initializer before '.' token

我认为我误用了typedef,因为clients.members.at(selectedTab)是函数调用而不是类型。有没有办法做我想在这里做的事情?

3 个答案:

答案 0 :(得分:5)

如果使用函数本地,并且clients.membersselectedTab在其使用之间都没有变化,那么只需使用引用。 E.g:

Member& currentMember = clients.members.at(selectedTab);
currentMember.foo();
currentMember.bar();

答案 1 :(得分:3)

您似乎正在尝试创建宏。

#define currentMember clients.members.at(selectedTab)

虽然取决于它的使用方式,但简单的功能可能会更好。

答案 2 :(得分:1)

在C ++ 0x中,你可以做到

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

但是,你所做的事情从根本上是不可能的。你正试图获得一个值并使其成为一种类型。那是不可行的。请考虑以下代码:

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

究竟是什么,它有什么作用?你将不得不解释更多你想要的东西。