C++矢量推送类
我试图编译下面的代码,但是消息没有匹配的函数来调用'std::vector::push_backdouble&'。有谁能帮我解决这个问题吗C++矢量推送类,c++,vector,C++,Vector,我试图编译下面的代码,但是消息没有匹配的函数来调用'std::vector::push_backdouble&'。有谁能帮我解决这个问题吗 struct Booking { double bT; double aT; double dT; }; class New { private: std::vector<Booking> vectorBookings; public: void gB(double bR,double aR, double
struct Booking
{
double bT;
double aT;
double dT;
};
class New
{
private:
std::vector<Booking> vectorBookings;
public:
void gB(double bR,double aR, double dR,double startTime,double finishTime)
{
double bT;
do
{
bT = startTime - (1.0/bR);
} while(bT<finishTime);
double aT = bT - (1.0/aR);
double dT = aT - (1.0/dR);
vectorBookings.push_back(bT,aT, dT);
}
};
您必须添加{}来构造一个Booking来推回
您必须添加{}来构造一个Booking来推回
如果您为预订定义了构造函数,则可以使用emplace_back:
然后只需将vectorBookings.push_backbT,aT,dT更改为vectorBookings.emplace_backbT,aT,dT。如果定义了用于预订的构造函数,则可以使用emplace_back:
然后只需将vectorBookings.push_backbT,aT,dT更改为vectorBookings.emplace_backbT,aT,dT。。我相信它在初始化时使用括号,而不是大括号。@chris,太棒了。“我不知道这是缺陷还是故意的行为。”谢尔盖亚,很可能是故意的。在设计初始化对象的函数时,必须进行此选择。最近有一篇博文或其他东西讨论了这个选择与std::optional的关系。我还有一个问题。当我尝试在主函数中为我的成员functin gB插入一些值时,它表示“不匹配”operator@Shawn您必须在尝试这样做的地方显示代码片段。如果您当前的问题已解决,并且您还有另一个问题,请随时在堆栈溢出上发布新问题。。我相信它在初始化时使用括号,而不是大括号。@chris,太棒了。“我不知道这是缺陷还是故意的行为。”谢尔盖亚,很可能是故意的。在设计初始化对象的函数时,必须进行此选择。最近有一篇博文或其他东西讨论了这个选择与std::optional的关系。我还有一个问题。当我尝试在主函数中为我的成员functin gB插入一些值时,它表示“不匹配”operator@Shawn您必须在尝试这样做的地方显示代码片段。如果您当前的问题已解决,并且您还有另一个问题,请随时在堆栈溢出上发布新问题。
vectorBookings.push_back({bT,aT, dT});
struct Booking
{
Booking(double bT, double aT, double dT) : bT {bT}, aT {aT}, dT {dT} {}
double bT, aT, dT;
};