I think this here might cause the problem -> ret.position = lns.find(key, start);. What does find return?
EDIT: Sorry, I thought at first that find was a function defined by you. But it's not... This find function returns a string::iterator, not an int. You have a type mismatch there.
EDIT2: Sorry again. This find function actually returns an int... I guess it's not what causes the problem...
EDIT3: I copied what you posted here in my compiler and it doesn't complain about anything... Perhaps the problem is located somewhere else... Perhaps you assign the return value of find2 to something that's not a FINDRETURN object... Could you be more specific about the errors you get?