“不允许使用多个模板参数列表”?

时间:2014-05-13 19:18:17

标签: c++ templates

我正在编写一个简单的类来管理一些代码弯路。

班级:

class CDetourManager {
public:

    CDetourManager() {}

    ~CDetourManager() {}

    template<convention_type tp, typename retn, typename ...args>
    VOID AddDetour( Detour<tp, retn, args...>* d ) {
        m_Detours.push_back( d );
    }

private:
    template<convention_type tp, typename retn, typename ...args>
    std::vector<Detour<tp, retn, args...>* > m_Detours;
};

但我得到一个错误:
Error 1 error C3857: 'CDetourManager::m_Detours': multiple template parameter lists are not允许

有谁知道我能做些什么来消除这个错误?这是我第一次使用模板,所以我有点迷失在这里:(

1 个答案:

答案 0 :(得分:1)

您似乎希望存储vector指针Detour。由于Detour的每个特化都有不同(和不相关)的类型,因此无法直接进行。但是,如果您使某个Detour接口继承了IDetour模板,该接口提供了对Detour进行操作所需的功能,那么您可以将AddDetour写为:

void AddDetour(IDetour *d) {
    m_Detours.push_back(d);
}

m_Detours as:

std::vector<IDetour *> m_Detours;