【发布时间】:2021-02-19 12:00:12
【问题描述】:
我有一个关于如何将unique_ptr 与重载构造函数一起使用的问题。
这是我的类定义:
class circle : public segment
{
public:
circle()
{
center.x = 0;
center.y = 0;
};
circle(const double r, const point c)
{
radius = r;
center.x = c.x;
center.y = c.y;
segment_id = 2;
};
~circle() {};
double get_radius() { return radius; };
point get_center() { return center; };
double get_length() { return 3.14 * radius; }; //returns circumference
private:
double radius = 0;
point center;
};
这就是我想要创建指针的方式:
std::unique_ptr<circle(radius1, center1)> myCircle;
但是,我的编译器(MS VisualStudio 2019)不接受它。它只接受std::unique_ptr<circle> MyCircle。如何使用自定义构造函数初始化该指针?
【问题讨论】:
-
你是在创建指针还是在创建一个圆圈?
-
在 C++14 之前。
std::unique_ptr<circle> MyCircle(new circle(radius1, centre1))。 C++14 及更高版本:std::unique_ptr<circle> MyCircle = std::make_unique<circle>(radius1, centre1)
标签: c++ pointers unique-ptr