【问题标题】:C++ vector<T> where T is a struct inside a classC++ vector<T> 其中 T 是类中的结构
【发布时间】:2016-10-25 03:42:07
【问题描述】:

我有一个如下所示的课程:

template<typename T>
class MyContainer
{

public:

    struct Handle
    {
        public:

            T* Resolve();
    };

private:

    vector<Handle> mHandles;

};

当我使用时,他们似乎不会为句柄编译迭代器:

vector<Handle>::iterator iter = mHandles.begin();

如果我将其更改为自动,它可以工作:

auto& iter = mHandles.begin();

我不应该明确地使用该类型吗?

【问题讨论】:

  • 请出示 MCVE。 stackoverflow.com/help/mcve
  • @songyuanyao mHandles是私人的,我觉得他应该试试typename vector&lt;Handle&gt;::iterator
  • @Danh 是的,我认为你是对的。

标签: c++ templates vector


【解决方案1】:

vector&lt;Handle&gt;::iterator 是一个从属名称,因此当您在模板函数/类中使用它时,您必须在其前面包含一个 typename

简单的改变

vector<Handle>::iterator iter = mHandles.begin();

typename vector<Handle>::iterator iter = mHandles.begin();

会起作用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2017-09-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多