Cha*_*mon 1 c++ templates vector
我有一个看起来像这样的课程:
template<typename T>
class MyContainer
{
public:
struct Handle
{
public:
T* Resolve();
};
private:
vector<Handle> mHandles;
};
Run Code Online (Sandbox Code Playgroud)
看起来他们在使用时不会为句柄编译迭代器:
vector<Handle>::iterator iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为自动它可以工作:
auto& iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)
我不认为明确使用该类型?
vector<Handle>::iterator是一个依赖名称,因此typename当您在模板函数/类中使用它时,必须在它之前包含一个
简单地改变
vector<Handle>::iterator iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)
至
typename vector<Handle>::iterator iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)
将工作.