我想创建一个简单的脚本引擎。我声明了一个数据结构。我有一些变量。
enum DataType
{
DT_INT,
DT_FLOAT,
DT_BOOL,
DT_VOID,
DT_STRING
};
template < typename T >
struct Data {
DataType data_type;
std::string variable_name;
T value;
};
我声明了类似的数据类型:
typedef Data< int > dataINT;
typedef Data< float > dataFLOAT;
typedef Data< bool > dataBOOL;
typedef Data< void > dataVOID;
typedef Data< std::string > dataSTRING;
我需要一个函数来获取模板函数的模板数据。
template < typename T >
Data< T > getData< T >(std::string s);
我创建了一个函数:
typedef Data< int > getData< int > getDataINT(std::string s);//<---The compiler says : "unrecognizable template declaration/definition"
我被卡住了。我该怎么办?
答案 0 :(得分:1)
除了函数声明完全错误之外,它们都可以使用函数的特化:
template < typename T >
Data< T > getData(std::string s);
template < >
Data< int > getData(std::string s);
template < >
Data< float > getData(std::string s);
// etc...