在构造函数声明中使用类局部类型定义

using class local type definition in constructor declaration

提问人:Ravikumar Tulugu 提问时间:12/14/2018 更新时间:12/14/2018 访问量:12

问:

我正在尝试在构造函数声明中使用类本地类型定义。这两个类都是模板,这里是代码。

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 的第二个构造函数定义,则代码构建良好。我无法解释为什么代码不会构建。

C++11 模板 using-directives

评论

0赞 n. m. could be an AI 12/14/2018
可能重复在哪里以及为什么我必须放置“模板”和“typename”关键字?

答:

1赞 rafix07 12/14/2018 #1

value_type是依赖名称,这取决于模板参数,在这种情况下,您需要使用来指示 is 类型typenamevalue_type

template <typename containedType >
class container
{
    public:
    container ( typename containedType::value_type v ) { return; }
                ^^^^^^^ 
    //container ( int v ) { return; }
};

评论

0赞 Ravikumar Tulugu 12/14/2018
非常感谢,它就像一个魅力。需要对此类型名称进行更多研究