C++11 C++;11将简单对象传递给接收对象容器的方法

C++11 C++;11将简单对象传递给接收对象容器的方法,c++11,C++11,是否可以将单个对象传递给接受对象容器的方法 例如: 我有一个自定义类条目绑定到数据库中的表: class Entry { public: Entry(int64_t iId, const std::string &sName); int64_t id(); std::string name(); private: int64_t iId_; std::string sName_; } void insert(const std:

是否可以将单个对象传递给接受对象容器的方法

例如:

我有一个自定义类
条目
绑定到数据库中的表:

class Entry
{
public:
    Entry(int64_t iId, const std::string &sName);    
    int64_t id();    
    std::string name();

private:
    int64_t iId_;
    std::string sName_;
}

void insert(const std::vector<Entry> &entries)
{
    // For the sake of example
    session.start();
    session << "INSERT INTO MyTable (ID, Name) VALUES " << bind(entries);
    session.stop();
}

void function()
{
    Entry entry(1, "RandomName");

    insert( ? entry ? ); // What should I do here?
}
类条目
{
公众:
条目(int64_t iId、const std::string和sName);
int64_t id();
std::string name();
私人:
国际贸易协定;
std::字符串sName;
}
无效插入(常量标准::向量和条目)
{
//为了以身作则
session.start();

会话使用带括号的初始化列表

insert( { entry } );

该列表可以转换为向量类型,并指定包含一个元素的容器。

使用带括号的init列表

insert( { entry } );

列表可以转换为
向量
类型,并指定一个包含一个元素的容器。

正如昆汀所说,您在这里实际上只有两个选项:

1) 重载函数。因此创建另一个带有签名的函数
void insert(Entry*single\u Entry)
,并创建一个SQL查询以仅插入一个


2) 当您通过
entry entry(1,“RandomName”)
创建一个大小为1的向量并将其传递给您的
insert
函数时。

正如昆廷所提到的,您实际上只有两个选项:

1) 重载函数。因此创建另一个带有签名的函数
void insert(Entry*single\u Entry)
,并创建一个SQL查询以仅插入一个


2) 当您通过
entry entry(1,“RandomName”)
创建一个大小为1的向量,并将其传递给
insert
函数。

您必须更改(或重载)函数,或者提供它所需的内容。实际上没有其他选择。您必须更改(或重载)函数,或者提供它所期望的。实际上没有其他选择。+1用于很棒的ha。我从未意识到它将为您进行转换,这是一个比我的更好的解决方案。顺便说一句,对于那些感兴趣的人,此链接将告诉您更多关于它将进行转换的限制:这可以推断到其他容器类型吗?+1 f或者很棒的哈。我从来没有意识到它会为你做这种转换,这是一个比我更好的解决方案。顺便说一句,对于那些感兴趣的人,这个链接将告诉你更多关于转换的限制:这可以外推到其他容器类型吗?