我不得不承认,我尽可能地避开了模板。我想改变它。他们不应该那么可怕。
如果我声明的函数如下:
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/