首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板中的setValue模板(双模板)

模板中的setValue模板(双模板)
EN

Stack Overflow用户
提问于 2018-06-05 03:16:29
回答 1查看 42关注 0票数 -1

函数(需要帮助):

代码语言:javascript
复制
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;
    }
}

它类似于双模板中设置值

这里:

代码语言:javascript
复制
T t;
//how to set the value of t and then push_back?
vec.push_back(t);

我试着用memcpy tempclass来得到我想要的东西..

像这样的strcut (也许全部都是字符串)

代码语言:javascript
复制
typedef struct tagTest
{
    std::string test1;
    std::string test2;
    std::string test3;

}TESTQUERY;

这就是我使用的函数:

代码语言:javascript
复制
vector<TESTQUERY> vec;
QueryMember("*", "test", vec);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 03:48:11

如果我对您的问题的理解是正确的,那么您希望能够将任何T值传递给函数(基于您所展示的示例函数调用)。为此,您需要添加一个附加参数:

代码语言:javascript
复制
void QueryMember(const std::string names, const std::string& table, const T& t)

然后,您只需要使用此t,而不是稍后创建另一个变量。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档