我有以下几种类型:模板参数名称作为基类
typedef unsigned int uint32;
typedef void* ptr;
struct memory_options {};
struct memory_provider {};
template <typename options>
struct memory_track {};
template <typename options>
struct no_memory_track : public memory_track<options> {};
template<typename options>
struct defrag_memory_track : public memory_track<options> {};
template<typename options>
struct full_memory_track : public memory_track<options> {};
template <typename options, typename prov, typename track>
struct memory_algorithm : public track <options> {};
int main()
{
}
此类型用于定义一个定制的内存管理器。
的问题是类memory_algorithm
会从另一个类继承,该类公司将始终以代表memory_options
类template parameter
,我把它叫做options
。基类可以是从memory_track
或从它的子类的部分专业化,所以在memory_algorithm
我传递了2个模板参数,一个代表类名 - 即track
- 另一个代表memory_options
类 - 即options
- 现在无论何时我试图编译使用GCC和Visual C++ 2008与样本测试装置的代码我得到了错误:
为Visual C++:
missing ',' before '<'
see reference to class template instantiation 'memory_algorithm' being compiled
为GCC:
error: expected template-name before '<' token
error: expected '{' before '<' token
error: expected unqualified-id before '<' token
什么问题以及如何解决?
如果将是非常有用的点线(S )发生错误。 – user93353