函数(需要帮助):
template <typename T>
void QueryMember(const std::string names, const std::string& table ,vector<T>& vec)
{
try
{
boost::scoped_ptr<sql::Statement> stmt(con->createStatement());
std::string sql;
sql = FormatArgs("select %s from %s", names, table);
boost::scoped_ptr< sql::ResultSet > res(stmt->executeQuery(sql));
sql::ResultSetMetaData* res_meta = res->getMetaData();
vector<std::string> vecStr;
int col = res_meta->getColumnCount();
while (res->next())
{
vecStr.clear();
for (int i=1;i<=col;i++)
{
vecStr.push_back(res->getString(i));
}
T t;
//how to set the value of t and then push_back?
vec.push_back(t);
}
}
catch (sql::SQLException &e)
{
std::cout << "QueryMember ERR: " << e.what() << endl;
}
}它类似于双模板中设置值
这里:
T t;
//how to set the value of t and then push_back?
vec.push_back(t);我试着用memcpy tempclass来得到我想要的东西..
像这样的strcut (也许全部都是字符串)
typedef struct tagTest
{
std::string test1;
std::string test2;
std::string test3;
}TESTQUERY;这就是我使用的函数:
vector<TESTQUERY> vec;
QueryMember("*", "test", vec);发布于 2018-06-05 03:48:11
如果我对您的问题的理解是正确的,那么您希望能够将任何T值传递给函数(基于您所展示的示例函数调用)。为此,您需要添加一个附加参数:
void QueryMember(const std::string names, const std::string& table, const T& t)然后,您只需要使用此t,而不是稍后创建另一个变量。
希望这能有所帮助。
https://stackoverflow.com/questions/50687368
复制相似问题