什么运算符重载将允许我执行此操作?是否有“无操作员”操作员?我知道要获得该值,我必须执行某种call(),但我想知道是否有可能清理它。
template<typename T>
class Stuff{
private:
T stuff{};
public:
T& operator () (){
return stuff;
}
T& operator = (const T& val){
stuff = val;
return stuff;
}
};
int main()
{
int myInt = 0;
Stuff<int> stuff;
stuff = myInt;
myInt = stuff(); // <- works
myInt = stuff; // <- doesn't, is there a way to do it ?
}
答案 0 :(得分:2)
是的,有一种方法:在Stuff
中构建用户定义的转换函数:
operator T() const
{
std::cout << "I'm here";
return 0;
}
由于myInt
是T
类型,因此将在分配myInt = stuff
中调用此函数。