如何使用数据对象上的常量指针初始化类

How to initialize a class with a const pointer on a data object

本文关键字:常量 指针 初始化 何使用 数据 对象      更新时间:2023-10-16

我在初始化以下类型的类实例时遇到问题:

Object::Object(const double &a, const double &b, bool c, const uint8_t *data)

我以以下方式尝试:

a = 50;
b = 40;
c = false;
data_ = std::make_unique<uint8_t[]>(a*b);
Object a = Object(a, b, c, data);

然后我得到这个错误消息:

no matching function for call to ‘namespace::Object::Object(double&, double&, bool&, std::unique_ptr<unsigned char []>&)’

问题可能是数组上的这个常量指针。有人知道如何解决这个问题吗?

感谢

您正试图传递一个std::unique_ptr对象,其中需要原始const uint8_t*。这将不起作用,因为unique_ptr不能隐式转换为指针。但是,您可以使用unique_ptr::get()方法来访问它所持有的指针。

附带说明一下,您有两个具有相同a名称的不同变量。您需要重命名其中一个。

试试这个:

double a = 50;
double b = 40;
bool c = false;
auto data = std::make_unique<uint8_t[]>(a*b);
Object obj(a, b, c, data.get());