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或者很棒的哈。我从来没有意识到它会为你做这种转换,这是一个比我更好的解决方案。顺便说一句,对于那些感兴趣的人,这个链接将告诉你更多关于转换的限制:这可以外推到其他容器类型吗?