c++ - C++ 模板是否有助于重用非常相似的代码?

标签 c++ templates c++11

我不得不承认,我尽可能地避开了模板。我想改变它。他们不应该那么可怕。

如果我声明的函数如下:

std::vector<SQLFieldObject> executeSelectQueryReturnSingleInt(std::string _sql);
std::vector<SQLPlantObject> executeSelectQueryReturnSingleInt(std::string _sql);
std::vector<SQLOrderObject> executeSelectQueryReturnSingleInt(std::string _sql);   

executeSelectQueryReturnSingleInt(std::string _sql) 中的每个函数的代码完全相同。我创建了 std::vector 的本地版本并将其返回。

我只想拥有一个通用的 executeSelectQueryReturnSingleInt(std::string _sql) 函数。

模板可能会解决这个问题,对吗?查看示例模板

template <class SomeType>
SomeType sum (SomeType a, SomeType b)
{
     return a+b;
}

令人困惑的是,除了返回 vector 不同之外,传入的参数是相同的。

谁能帮助我了解如何开始应用模板来重用代码?

最佳答案

你可以这样做:

template<typename SQLObject>
std::vector<SQLObject> executeSelectQueryReturnSingleInt(std::string _sql) {
    ...
}

然后你称它为,例如,

executeSelectQueryReturnSingleInt<SQLPlantObject>("rose");

请注意,您必须显式指定模板参数,因为它们不能从函数参数中推导出来,但除此之外,这会像您期望的那样工作。

关于c++ - C++ 模板是否有助于重用非常相似的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160025/

相关文章:

c++ - 多次使用相同的 C++ 访问说明符

c++ - 在函数中返回 "template class object"

c++ - 模板类的模板友元函数

c++ - CRTP 和表达式模板 线性代数

c++ - 遍历 multimap 中的一个组我怎么知道我是在第一个还是最后一个元素中?

c++ - 无法将字符串从命令行转换为 float 组

c++ - 如何以尽可能少的时间复杂度检测网格中的循环?

c++ - 为什么我的程序不打印完美整数?

c++ - 如何在C++中动态创建 vector

c++ - 如何将 std::bind 作为通用引用类型传递?