在包装的临时文件中返回对象引用
Returning an object reference in a wrapped temporary
我有一个内部连续内存块的迭代器,在调用operator *
时,我想将迭代器指向的内容包装到一个类中,该类封送可以在底层类型上执行的各种操作。
这里有一个例子可以更好地解释我自己。
class iterator
{
private:
some_t* _ptr;
public:
// ..
wrapper<some_t&> operator *() { return wrapper<some_t&>(*_ptr); }
// ..
};
int main(int argc, char** argv)
{
auto it = some_class.begin() // returns iterator above;
*it += 20; // do some operation that invokes the overload.
return 0;
}
我希望包装器的行为尽可能像底层内置类型(所有运算符、二进制、一元、布尔等),但上述已被证明很难实现且非常混乱,尤其是当我想拥有wrapper<some_t*>
并且wrapper<some_t&>
表现为内置类型时。
很明显,我的方法完全是错误的,所以我想知道是否有其他人对如何以更好的方式实现相同的目标有任何想法?
谢谢!
你在找std::ref()
吗?
http://en.cppreference.com/w/cpp/utility/functional/ref
这是一个返回std::reference_wrapper<T>
的函数。 反过来,该类型具有到绑定引用类型的隐式转换。
它并不完全是你要找的,但它可能尽可能接近你所能得到的(而且一切都准备好了)。 使用隐式赋值,您可以将其传递给另一个函数,该函数采用包装类型的参数,但它不允许您对基础对象上的方法进行点访问。 阿法克出来了。
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 如何通过引用返回对象
- C++对象引用返回不同的值
- 对象引用中的字段以不同的方法返回不同的值
- 返回一个引用C++中另一个类对象的对象的有效方法
- 为什么要返回通过引用传递给 C++ 函数的对象?
- 从函数返回 libconfig 类设置对象引用
- C .返回对象或传递引用以填写
- 在这种情况下,为什么使用 *此必需的对象引用返回对象引用
- 地址运算符是否返回变量引用的对象的地址
- 通过引用从 c++ 函数异常返回对象是否安全
- C++OOP基础知识-是否正确返回对象引用
- 创建返回对象引用的成员函数的最简单方法
- JNI:从C++调用JAVA方法,返回对象,引用和GC
- C++问题返回通过引用本地创建的对象
- 返回对象与默认构造函数签名中的引用
- 在包装的临时文件中返回对象引用
- 如何从C++中的函数返回对象引用,以及如何从客户端调用该函数
- 在Python中调用一个返回对象引用的c++ DLL
- 为什么在c++中的函数内部返回对象引用是可以的