假设我有一个类A
,它有一个名为init()
的公共方法。当我创建std::vector
类型A
的对象时,我可以轻松地为所有对象调用此方法:
std::vector<A> v;
/* filling vector with some objects */
v[1].init(); // Intellisense finds that v[1] object has method '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
导致此类行为?
答案 0 :(得分:3)
可能只是VS2012缓存符号定义文件中的一个小故障。关闭解决方案,删除解决方案目录中的sdf文件(名为[SolutionName] .sdf)并重新打开解决方案。给符号缓存几分钟重新构建(取决于项目的大小)并希望最好。每当出现问题时都要冲洗并重复(尤其是对于包含大量代码的解决方案)。