【发布时间】:2021-04-16 19:51:32
【问题描述】:
在这段代码中,Payment 是Credit 的抽象基类。知道如何解决这个任务吗?
二进制“=”:未找到采用“Credit *”类型右侧操作数的运算符(或没有可接受的转换)
unique_ptr<Payment> p;
Credit c("<cardnumber>", "<expdate>", 9999.99);
p = &c;
【问题讨论】:
-
你很幸运。如果成功,程序将删除
c两次。 -
好问题,从智能指针开始很容易犯错误。当您声明一个局部变量时,您可以将其视为函数“拥有”该变量。所以如果你想让
unique_ptr拥有它,你需要在指针内部构造它。 -
@TedLyngmo — 程序会删除对象一次并销毁它两次。
-
@PeteBecker 是的,我同意。我的措辞草率。
标签: c++ object abstract-class unique-ptr