【问题标题】:Simple Script Engine template data type of a template function模板函数的简单脚本引擎模板数据类型
【发布时间】: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 variantBoost any
  • 另外,Data&lt;void&gt; 也不能很好地工作。
  • 空虚该怎么办?

标签: c++ function templates typedef


【解决方案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...

【讨论】:

  • 它起作用了。但我不明白你为什么使用“模板”?
  • 脚本引擎的结构应该如何?您能提供一些提示吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多