The problem is that GetNumAvail defines a constant reference to Invnumfiler argument const Invnumfilter &, you however pass a pointer to a Invnumfilter pointer &filter with filter being a Invnumfilter*. Basically, as an argument it expects an Invnumfilter but you try to pass an Invnumfilter**. Basically, just write *(filter) instead.
Next problem is a bit more severe though - Invnumfilter *filter="92%";
You create a new pointer to an invnumfilter here, and assign the address of a string literal to the address of your Invnumfiler. Invnumfilter *filter= new Invnumfilter("92%"); is probably what you wanted to do.