是否有任何机制来检测T函数的类型并选择正确的执行方法?
我知道我可以编写几个函数,ClassContainerAdv<INT OR FLOAT>::但我不喜欢这种方式,因为原始函数是100行代码,我需要在一行中选择正确的方法.所以,如果我有两个ClassContainerAdv<INT OR FLOAT>::函数 - 这意味着2x源文件中相同代码(复制和粘贴)的半身像.
例:
template <class T>
void ClassContainerAdv<T>::add_data_to_sqlite( const sqlite3* db )
{
[skip]
if ( T == "INT" )
sqlite3_bind_int64(stmt, 1, (it->first) );
else if ( T == "FLOAT" )
sqlite3_bind_double(stmt, 1, (it->first) );
[skip]
}
Run Code Online (Sandbox Code Playgroud)
您可以专门化您的功能模板.例如:
template<typename T>
void ClassContainerAdv<T>::add_data_to_sqlite( const sqlite3* db );
template<>
void ClassContainerAdv<int>::add_data_to_sqlite( const sqlite3* db )
{
sqlite3_bind_int64(stmt, 1, it->first);
}
template<>
void ClassContainerAdv<float>::add_data_to_sqlite( const sqlite3* db )
{
sqlite3_bind_double(stmt, 1, it->first);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |