使用局部变量中的类成员类型



如果我有一个用复杂类型声明的变量,例如:

std::unordered_map<PathKey,unsigned int> childDict;

有没有一种方法可以使用主类类型的子类型来声明变量?

我想做一些事情,比如:

childDict::iterator iter = childDict.begin();

但是这不是有效的c++。

我知道还有其他选择:

  • auto,但我试图避免它,原因有很多,包括代码的不可读性。你不容易弄清楚变量类型是什么(它是迭代器吗?是对吗?是指针吗?)。上述方法不存在此问题
  • typedef首先定义类型,但如果上面的方法有效,我认为它会更简洁,代码也会非常清晰

有办法做到这一点吗?

C++11decltype()将工作:

#include <vector>
struct A {
vector<int> v;
void f() {
decltype(v)::iterator i = v.begin();
}
};
int main() {
return 0;
}

我认为它是否比auto更可读,尽管它几乎正是您想要的语法。我认为没有其他方法可以从变量中推导类型。

最新更新