给定以下代码:
template <typename T>
struct Wrapper {
T value;
Wrapper(T val) : value(val) {}
}
int main() {
Wrapper<int> x(42);
int y = x; // need solution for y = x.value
return 0;
}
有没有办法实现分配
int y = x;
所以这意味着 y = x.value 。
我知道重载赋值运算符本身是不可能的,因为它适用于赋值左侧的对象,并且标准不允许带有两个参数的友元函数。
如果通过重载任何其他运算符或使用一些特殊技巧无法实现这一点,您将如何实现这一点,除非通过调用 Wrapper 类提供的 get 方法,例如:
int y = x.get();