C++ vector<T> 其中 T 是类中的结构
Posted
技术标签:
【中文标题】C++ vector<T> 其中 T 是类中的结构【英文标题】:C++ vector<T> where T is a struct inside a class 【发布时间】: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。 ***.com/help/mcve @songyuanyaomHandles
是私人的,我觉得他应该试试typename vector<Handle>::iterator
@Danh 是的,我认为你是对的。
【参考方案1】:
vector<Handle>::iterator
是一个从属名称,因此当您在模板函数/类中使用它时,您必须在其前面包含一个 typename
简单的改变
vector<Handle>::iterator iter = mHandles.begin();
到
typename vector<Handle>::iterator iter = mHandles.begin();
会起作用的。
【讨论】:
以上是关于C++ vector<T> 其中 T 是类中的结构的主要内容,如果未能解决你的问题,请参考以下文章
c++中vector<vector<T>>怎么初始化vector<T>?
在现代 C++ 中将 std::array<std::array<T,N>> 转换为 std::vector<T>