Можно сделать большую часть времени (но printf
потребует немного больше усилий):
class MyObject {
...
operator int() const { // user-defined conversion operator
return /*the value you want to see*/;
}
...
Таким образом, в любой момент вы передаете объект функции, которая принимает int
а не MyObject
, оператор преобразования вызывается для получения этого int. Он также будет вызываться для явных приведений типа (int)obj
.
printf
проблематично c, поскольку он не принимает специально int
- он принимает что-либо (подпись более или менее int printf(const char *, ...)
). Так что вам придется называть это как printf("%d\n", (int)obj1);
.
Я бы посоветовал не использовать printf
слишком много, это наследие C, поэтому не может быть безопасным для типов (например, printf("%s", 1)
это неизбежный Cra sh). Используйте fmt или iostreams, например.