请问,要如何输入这个参数?
下面把代码贴上来
头文件中的声明
template <class DataType>https://img-mid.csdnimg.cn/release/static/image/mid/ask/999967185626110.png)
class Bihttps://img-mid.csdnimg.cn/release/static/image/mid/ask/345657185626173.png)
Tree: public CATBaseUnknown
源文件中的这几种形式编译都会出错
CATImplementClass(//BiTree,//编译信息:'BiTree' : use of class template requires template argument list
//BiTree<DataType>,//编译信息:'DataType' : undeclared identifier
//template <class DataType> BiTree<DataType>,//编译信息:error C2059: syntax error : ''template<''
//template <class DataType> DataType BiTree<DataType>,//编译信息:error C2059: syntax error : ''template<''
//BiTree<>,//编译信息:error C2976: 'BiTree' : too few template arguments
//BiTree<class DataType>,//编译信息:error C2906: 'CATMetaClass *BiTree<DataType>::MetaObject(void)' : explicit specialization requires 'template <>'
//BiTree<template <class DataType>>,//编译信息:error C2059: syntax error : ''template<''
//template <class DataType> BiTree,//编译信息:error C2059: syntax error : ''template<''
Implementation,
CATBaseUnknown,
CATNull);
这是一种形式,也是会出错
template <class DataType> CATImplementClass(BiTree<DataType>,//编译信息:error C2065: 'DataType' : undeclared identifier
Implementation,
CATBaseUnknown,
CATNull);
这是一种形式,也是会出错
template <class DataType> CATImplementClass(DataType,//编译信息:error C2063: 'GetMetaObject' : not a function
Implementation,
CATBaseUnknown,
CATNull);
**再贴上文档中对参数的说明,这个输入的参数要求是class name
**
如果源文件是函数声明,这样改:
template <class DataType>
CATImplementClass(BiTree<DataType>,
Implementation,
CATBaseUnknown,
CATNull);
c++的模板在编译期间会实例化成具体类型。在cpp文件里必需指明模板最终的类型。如果不能指明类型,需要放到头文件里的