Use a standard class
Make it compile (use explicit type names)
Fix inclusion guard macro
Do not use ternary operator