Using of NewSoftSerial in custom library

tunz
The idea in C/C++ is that you can only define stuff once but you can declare it multiple times.
You declare variables with the extern statement telling that the variable is not defined here but externally. This leads you with the declaration but not with the definition.
You still need to define it once.

If you look at it from a code perspective a header can be included many times. So you should only "declare" variables and functions. If you define variables or methods you'll get the error "multiple definition of XXX" you are talking about.
The analogy is the same as with functions
void Myfunction(); // defines a function
void Myfunction(){;}// implements the function

As to the behavior you are describing. Are you sure you saved the files properly each time before compiling? Because this should work (I just tested it here to be 100% sure)

Best regards
Jantje

PS note that the C++ inline is a exception to this rule. It is possible because the inline code is copied by the preprocessor in the real code.