调用指针参数从const函数指向的对象的操作员
call operator of the object that a pointer argument is pointing to from a const function
定义操作员
RGBAPixel * operator()(size_t x, size_t y);
RGBAPixel const * operator()(size_t x, size_t y) const;
我应该如何在const函数中调用它?(底部的PNG)
PNG Quadtree::decompress() const
{
PNG * png = new PNG((size_t) res, (size_t) res);
decompressHelper(png,0,0,res/2,root);
return * png;
}
void Quadtree::decompressHelper(PNG * png, int x, int y, int setresolution, QuadtreeNode * subRoot) const
{
if (subRoot->nwChild == NULL) {
png((size_t) x, (size_t) y) = subRoot->element;
只是将操作员过载定义为const:
RGBAPixel * operator()(size_t x, size_t y) const;
^~~~~
既然您是通过指针传递的,则应在打电话之前将其取消(不要忘记退出):
*(*png)((size_t) x, (size_t) y) = subRoot->element;
^^ ^
它不是一个函数指针,而是一个可以用作函数的类对象的指针。但是,这是一个微妙的区别。
我还建议更改此功能以防止潜在的内存泄漏:
PNG Quadtree::decompress() const
{
PNG png((size_t) res, (size_t) res);
decompressHelper(&png, 0, 0, res/2, root);
return png;
}
您不是delete
-ing您已分配给new
的内容。
相关文章:
- 如何超载操作员 如果调用对象不是类对象
- 如何使用向量将类对象存储在超载操作员中
- 如何使用安置新操作员创建对象数组
- 如何在不使用C 中使用新操作员的情况下创建对象
- C 如何将对象数据传递到用户定义的转换操作员中
- 调用指针参数从const函数指向的对象的操作员
- GNU GCC会跟踪以前使用箭头操作员对的对象
- 操作员重载=修改原始对象
- 为什么最后一个SR5对象不用重载的新操作员占据内存
- c 从范围删除对象的操作员导致崩溃dealloceLoceLoceLoceLoceLoceLoceLoceLoceL
- C - 由基类指向的更改对象(在操作员oveloading函数中返回引用基类)
- 操作员=超载不起作用,除非对象已经初始化
- 从操作员内部获取有关对象的RTTI信息
- STD :: BITSET ::参考对象在STD :: BITSET ::操作员[]中创建的寿命
- 在C 中添加两个对象(操作员过载)
- 不带操作员的对象的数组初始化,复制构造函数或默认构造函数和运行时参数
- 通过使用新操作员创建对象会导致未解决的外部符号错误C FTGL
- 使用操作员= C 对象构建
- 我何时应该将指针从操作员函数中返回对象(而不是对象)
- 如何从操作员函数返回动态对象