作者:BrucelLi | 来源:互联网 | 2023-02-01 19:48
1> Slava suppor..:
这个电话:
std::make_unique(mat1)
尝试创建一个类的实例Material
,它与什么类型无关mat1
.你似乎需要clone()
班上的方法:
class Material {
...
virtual std::unique_ptr clone() cOnst= 0;
};
那么Mix
ctor将是:
Mix(const Material& mat1, const Material& mat2)
: mat1_(mat1.clone())
, mat2_(mat2.clone())
{}
你需要clone()
在每个派生类中实现:
struct Basic : public Material
{
Basic() = default;
virtual std::unique_ptr clone() const override
{
return std::make_unique( *this );
}
virtual int get_color() const override
{
return 1;
}
};