我试图在构造函数声明中使用类局部类型定义。这两个类都是模板,这是代码。
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,则代码可以正常运行。我无法解释为什么代码无法构建。
答案 0 :(得分:1)
value_type
是从属名称,它取决于模板参数,在这种情况下,您需要使用typename
来指示value_type
是 type :>
template <typename containedType >
class container
{
public:
container ( typename containedType::value_type v ) { return; }
^^^^^^^
//container ( int v ) { return; }
};