#include <iostream>
using namespace std;
/// implement your class here
class Printer;
///
int main( ) {
Printer printer;
printer = 42 ;
printer.print ( ) ; //should print "42" to standard output
int * value = new int ( 10 ) ;
printer = value;
printer.print ( ) ; // should print "[10]"
* value = 20 ; // the value pointer did not change, changed a value by it
printer.print ( ) ; // should print "[20]"
float * fvalue = new float ( 9.81 ) ;
printer = fvalue;
printer.print ( ) ; // should print "[9.81]"
* fvalue = 0.2 + 0.3 ;
printer.print ( ) ; // should print "[0.5]"
printer = std:: string ( "Hello world" ) ;
printer.print ( ) ;
//should print "Hello world"
printer = 2.718281 ;
printer.print ( ) ;
//should print "2.718281"
delete fvalue;
delete value;
return 0 ;
}
// the standard output should be:
42
[ 10 ]
[ 20 ]
[ 9.81 ]
[ 0.5 ]
Hello world
2.71828
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8vIGltcGxlbWVudCB5b3VyIGNsYXNzIGhlcmUKY2xhc3MgUHJpbnRlcjsKLy8vCgoKaW50IG1haW4oKSB7CglQcmludGVyIHByaW50ZXI7CgoJcHJpbnRlciA9IDQyOwoJcHJpbnRlci5wcmludCgpOyAvL3Nob3VsZCBwcmludCAiNDIiIHRvIHN0YW5kYXJkIG91dHB1dAoKCWludCogdmFsdWUgPSBuZXcgaW50KDEwKTsKCXByaW50ZXIgPSB2YWx1ZTsKCXByaW50ZXIucHJpbnQoKTsgLy8gc2hvdWxkIHByaW50ICJbMTBdIgoKCSp2YWx1ZSA9IDIwOyAvLyB0aGUgdmFsdWUgcG9pbnRlciBkaWQgbm90IGNoYW5nZSwgY2hhbmdlZCBhIHZhbHVlIGJ5IGl0CglwcmludGVyLnByaW50KCk7IC8vIHNob3VsZCBwcmludCAiWzIwXSIKCglmbG9hdCogZnZhbHVlID0gbmV3IGZsb2F0KDkuODEpOwoJcHJpbnRlciA9IGZ2YWx1ZTsKCXByaW50ZXIucHJpbnQoKTsgLy8gc2hvdWxkIHByaW50ICJbOS44MV0iCgogICAgKmZ2YWx1ZSA9IDAuMiswLjM7CglwcmludGVyLnByaW50KCk7IC8vIHNob3VsZCBwcmludCAiWzAuNV0iCgoJcHJpbnRlciA9IHN0ZDo6c3RyaW5nKCJIZWxsbyB3b3JsZCIpOwoJcHJpbnRlci5wcmludCgpOyAKCS8vc2hvdWxkIHByaW50ICJIZWxsbyB3b3JsZCIKCQoJcHJpbnRlciA9IDIuNzE4MjgxOwoJcHJpbnRlci5wcmludCgpOyAKCS8vc2hvdWxkIHByaW50ICIyLjcxODI4MSIKCQogICAgZGVsZXRlIGZ2YWx1ZTsKICAgIGRlbGV0ZSB2YWx1ZTsKCXJldHVybiAwOwp9CgoKLy8gdGhlIHN0YW5kYXJkIG91dHB1dCBzaG91bGQgYmU6CjQyClsxMF0KWzIwXQpbOS44MV0KWzAuNV0KSGVsbG8gd29ybGQKMi43MTgyOA==