为了在我的代码中节省一些空间,我做了这个typedef:
typedef clients.members.at(selectedTab) currentMember;
然而,g ++给了我这个错误:
error: expected initializer before '.' token
我认为我误用了typedef,因为clients.members.at(selectedTab)
是函数调用而不是类型。有没有办法做我想在这里做的事情?
答案 0 :(得分:5)
如果使用函数本地,并且clients.members
和selectedTab
在其使用之间都没有变化,那么只需使用引用。 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;
究竟是什么,它有什么作用?你将不得不解释更多你想要的东西。