C++ 使用模板参数中定义的类型
当使用诸如C++ 使用模板参数中定义的类型,c++,templates,C++,Templates,当使用诸如vector、list等容器类时,我可以通过编写vector::value\u type来使用元素的类型 但是,下面的代码 template<class container> void foo(container& c) { typedef container::value_type elementtype; elementtype b; } 模板 void foo(集装箱和集装箱) { typedef容器::value_type elementtype;
vector
、list
等容器类时,我可以通过编写vector::value\u type
来使用元素的类型
但是,下面的代码
template<class container>
void foo(container& c)
{
typedef container::value_type elementtype;
elementtype b;
}
模板
void foo(集装箱和集装箱)
{
typedef容器::value_type elementtype;
元素b型;
}
失败,错误为“在'elementtype'之前需要初始值设定项”
”。
当容器类型作为模板参数提供时,是否可以推断元素类型,或者我是否必须将元素类型作为额外的模板参数提供?您缺少所需的typename关键字:
typedef typename container::value_type elementtype;
这是因为container
在此模板中是一个依赖名称,因此编译器无法知道container::value\u type是否始终是一个类型,因为它可能取决于container
的选择
这个问题肯定是某个地方的常见问题
编辑,它是:您缺少所需的typename关键字:
typedef typename container::value_type elementtype;
这是因为container
在此模板中是一个依赖名称,因此编译器无法知道container::value\u type是否始终是一个类型,因为它可能取决于container
的选择
这个问题肯定是某个地方的常见问题
编辑,它是: