C++ vector <T>其中T是类中的结构

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)

我不认为明确使用该类型?

Dan*_*anh 5

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)

将工作.