提问人:Ravikumar Tulugu 提问时间:12/14/2018 更新时间:12/14/2018 访问量:12
在构造函数声明中使用类局部类型定义
using class local type definition in constructor declaration
问:
我正在尝试在构造函数声明中使用类本地类型定义。这两个类都是模板,这里是代码。
template < typename T>
class complexType
{
public:
using value_type = T;
complexType( T t ) {}
};
template <typename containedType >
class container
{
public:
container ( containedType::value_type v ) { return; }
//container ( int v ) { return; }
};
int main(int ac, char **av)
{
container <complexType<int>> c(100);
return 0;
}
如果我使用传递 int 的第二个构造函数定义,则代码构建良好。我无法解释为什么代码不会构建。
答:
1赞
rafix07
12/14/2018
#1
value_type
是依赖名称,这取决于模板参数,在这种情况下,您需要使用来指示 is 类型:typename
value_type
template <typename containedType >
class container
{
public:
container ( typename containedType::value_type v ) { return; }
^^^^^^^
//container ( int v ) { return; }
};
评论
0赞
Ravikumar Tulugu
12/14/2018
非常感谢,它就像一个魅力。需要对此类型名称进行更多研究
评论