Line 18 is calling Paint() but you don't define it until line 20.
Either move the definition of Paint() before you use it, or put a forward declaration in before you use it:
void Paint(); // Forward decl - defines function interface, but not body.
You're also missing a closing brace from the try block in PNT::NullPaint
"PNT" cannot be used to provide definitions for member-functions as it's not a type-identifier. In order to define a member function outside of the class, you must qualify the member-function's identifier with the class' name of which it's a member of. For example:
It's just like a normal function definition except that the function's name is prefixed with the class' name and then the SRO (::), or Scope Resolution Operator.
You're also calling the methods in PAINTER incorrectly.
Line 25, PNT::NullPaint(&PASS); should be PNT.NullPaint(&PASS);
The <class>::<method>() type call is for calling static methods on a class, not methods on an object.
Also, while we're on line 25, PASS is defined in main(), so it's not visible to Paint() where you're trying to use it.
AND PASS is defined as a const char*, so you don't need to use &PASS, just PASS will do. If you use &PASS you're ending up with a const char**, not a const char* as NullPaint() expects. So line 25 now becomes (once Paint() can see PASS):
PNT.NullPaint(PASS);
Actually, there's plenty wrong here - line 11 is misformed - you need a ';' on the end.
Also, your definition of NullPaint should be PAINTER::NullPaint(), not PNT::NullPaint() - PNT is an instance/object of the PAINTER class.