如何使用向量的template_back函数
How do I use the emplace_back function of a vector?
编辑:改为只有一个问题,感谢反馈!
我有这个矢量
vector<Artifact> art;
art.emplace_back("Ipad", 349.99);
art.emplace_back("Gameboy", 29.99);
art.emplace_back("Xbox", 229.99);
art.emplace_back("SamsungTV", 559.99);
art.emplace_back("AirCon", 319.99);
这些项目给我一个错误
C2661 'Artifact::Artifact': no overloaded function takes 2 arguments
我不明白为什么它会给我这个错误,我有一个有7个参数的构造函数,但我只需要名称和价格来完成我要做的事情。
编辑:这是可重复性最小的例子:
class Item {
public:
virtual double GetTotalPrice();
};
//Class artifact now inherits Item
class Artifact : public Item
{
private:
string GUID;
string Name;
string Description;
string Category;
double Price;
double Discount;
enum DiscountType { Amount, Percentage };
int Quantity;
public:
//Constructor
Artifact(string GUID, string Name, string Description, string Category, double Price, double Discount, int Quantity)
{
this->GUID = GUID;
this->Name = Name;
this->Description = Description;
this->Category = Category;
this->Price = Price;
this->Discount = Discount;
this->Quantity = Quantity;
}
//default constructor
Artifact();
void set_name(const string& name)
{
Name = name;
}
void set_price(double price)
{
if (Price > 0)
{
Price = price;
}
else cout << "Price cannot be negative!";
};
int main()
{
vector<Artifact> art;
art.emplace_back("Ipad", 349.99);
art.emplace_back("Gameboy", 29.99);
art.emplace_back("Xbox", 229.99);
art.emplace_back("SamsungTV", 559.99);
art.emplace_back("AirCon", 319.99);
return 0;
}
基本上,您得到的错误是因为您有两个构造函数(一个默认为0参数,另一个为7参数版本(,但您只向emplace_back
传递了两个值。传递给emplace_back
的值被转发给Artifact
的构造函数。
有两种可能的解决方法。首先,创建另一个只接受两个值的构造函数,如下所示:
Artifact(string Name, double Price) : Artifact("", Name, "", "", Price, 0., 0 ) {}
或者,您可以修改现有的7参数构造函数以使用默认值
// note the reordering of parameters here
Artifact(string name, double Price, string GUID= "",
string Description = "", string Category = "",
double Discount = 0.0, int Quantity = 0) { … }
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- C2039字符串成员函数.pop_back()和.back()出错