C ++问题将“三参数”类模板“调整”为双参数类模板

时间:2011-02-28 01:15:11

标签: c++ templates typedef

我有一个期望两个参数模板的类,如下所示:

template<template <class, class> class TwoParamsClass>
class Test
{};

我也有这样的课程:

template<int a, class A, class B>
class ThreeParamsClass
{};

我需要一个适配器来设置“ThreeParamsClass”的第一个int参数,以便能够在Test类中使用它们。


这是我的部分解决方案(以及它的问题)。

template<int a>
struct Alias
{
    template<class A, class B>
    struct Type
    {
        typedef ThreeParmamsClass<a, A, B> Type2;
    };
};

然后,我将测试称为:

Test<Alias<1>::Type> 

(当然,在Test中我需要获取param并获取:: Type2类型)

但问题是,在那之后,我需要包装Test类,如下所示:

template<int n>
struct Wrap
{
    typedef Test<Alias<n>::Type> WrappedTest;
};

但是,我收到了这个错误:

  

错误:类型/值不匹配   模板参数列表中的参数1   为'模板   T类&gt; class Test'

这很奇怪,因为这很好用:

template<int n>
struct Wrap
{
    typedef Test<Alias<1>::Type> WrappedTest;
};

我希望明确,我想对这个问题提出两个问题,但我认为最好将第二个问题纳入第一个问题。

由于

1 个答案:

答案 0 :(得分:2)

不是真的理解你的推理,但试试这个:

template<int n>
struct Wrap
{
    typedef Test<Alias<n>::template Type> WrappedTest;
};