我正在编写一个简单的类来管理一些代码弯路。
班级:
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
允许
有谁知道我能做些什么来消除这个错误?这是我第一次使用模板,所以我有点迷失在这里:(
答案 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;