简单脚本引擎模板模板函数的数据类型

时间:2014-09-22 13:08:42

标签: c++ function templates typedef

我想创建一个简单的脚本引擎。我声明了一个数据结构。我有一些变量。

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"

我被卡住了。我该怎么办?

1 个答案:

答案 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...