C++ 使用typedef时没有可用的成员

C++ 使用typedef时没有可用的成员,c++,visual-studio-2012,intellisense,typedef,C++,Visual Studio 2012,Intellisense,Typedef,假设我有一个类a,它有一个名为init()的公共方法。当我为A类型的对象创建std::vector时,我可以轻松地为所有对象调用此方法: std::vector<A> v; /* filling vector with some objects */ v[1].init(); // Intellisense finds that v[1] object has method 'init()' std::vector v; /*用一些对象填充向量*/ v[1].init();

假设我有一个类
a
,它有一个名为
init()
的公共方法。当我为
A
类型的对象创建
std::vector
时,我可以轻松地为所有对象调用此方法:

std::vector<A> v;

/* filling vector with some objects */

v[1].init();   // Intellisense finds that v[1] object has method 'init()'
std::vector v;
/*用一些对象填充向量*/
v[1].init();//Intellisense发现v[1]对象具有方法“init()”
但当我使用typedef时,我无法访问该方法:

typedef std::vector<A> a_vector;

a_vector v;

/* filling vector with some objects */

v[1].   // Intellisense says that v[1] object doesn't have any members available
typedef std::vector a_vector;
a_向量v;
/*用一些对象填充向量*/
v[1]。//Intellisense说v[1]对象没有任何可用的成员

为什么使用
typedef
会导致这种行为?

可能只是VS2012缓存符号定义文件中的一个小故障。关闭解决方案,删除解决方案目录中的sdf文件(名为[SolutionName].sdf),然后重新打开解决方案。给符号缓存几分钟时间重新构建(取决于项目的大小),并期待最好的结果。每当出现问题时(尤其是对于包含大量代码的解决方案),请清洗并重复操作。

您使用的IDE是什么?@Aesthete Visual Studio 2012问题在于Intellisense;代码仍然可以正常编译。智能感知很容易被混淆,这是生活中的一个事实。第二种情况(typedef)对我来说是正确的。我用VS2008。你使用名称空间吗?