如何使用数据对象上的常量指针初始化类
How to initialize a class with a const pointer on a data object
我在初始化以下类型的类实例时遇到问题:
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());
相关文章:
- 将常量指针引用绑定到非常量指针
- 如何使用数据对象上的常量指针初始化类
- 为什么我收到"从常量指针到指针的转换无效?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 为什么C++中没有常量引用,就像常量指针一样?
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- 将常量指针强制转换为非常量
- 带有常量指针的矢量构造函数示例
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- 常量指针上的混乱
- 使用 static_cast 时指向常量指针的原因
- 如何在C++中定义常量指针数组?
- 测试此指针的常量指针性质
- 当常量指针用作函数的参数时
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 在不同类型之间转换常量指针
- 解构常量指针?
- 为什么 std::vector<>::const_reference 可以转换为非常量指针?