【发布时间】:2014-09-22 13:08:41
【问题描述】:
我想创建一个简单的脚本引擎。我声明了一个数据结构。我有一些变量。
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"
我卡住了。我该怎么办?
【问题讨论】:
-
只需删除
typedef。 -
我应该使用类似的东西吗:Data
getData getDataINT(std::string s); -
顺便说一下,您可能想了解一下Boost variant 和Boost any。
-
另外,
Data<void>也不能很好地工作。 -
空虚该怎么办?
标签: c++ function templates typedef