Возможно ли перегрузить оператор только для одной функции. Я хочу переопределить оператор '->', но только когда он вызывается с функцией печати (-> print()). Я понимаю, что это странный запрос, но я работаю над выполнением определенного API, и мне нужно что-то вроде этого.Оператор перегрузки для вызова функции
Например:
Cat cat;
cat.walk();
cat->print(); //I want to overload only this call
Однако, я не хочу перегружать '->' оператора для всех случаев. Например:
Cat* cat;
cat->walk(); //this should work normally
cat->print(); //this wouldn't call the print() function,
//since I overloaded cat->print()
'Cat * cat; cat-> print(); 'Что именно это должно было бы делать? Не следует компилировать или что? – jrok
Обратите внимание, что если левая часть '->' является указателем, оператор стрелки всегда имеет свой встроенный смысл, и никакой 'operator->' не изменит то, что означает выражение. – aschepler