rephrased: that the constructor of A() executes init() so you have a valid object from the start (perhaps init() would be no longer needed)
then the other methods would not be static, but refer to that A object.
You can have a static boolean variable in the class that indicates whether the class has been inited. Then have render call init if it has never been called.
cout and cerr refer to different streams, namely stdout and stderr.
you'll use the error stream to output error messages, that way you may separate them from the normal output of the program.
you may also redirect the standard output to another program (a pipe), and you may still see the error messages printed to the console.
Also, cerr is not buffered, if you use cout and the program terminates abnormally later, you may not see some messages because they were still in the buffer