It's because fn is not a member function pointer of Object. For that you have to do e.g.
bool (Object::*fn)(std::string)
Then to call it you have to do
(obj.*fn)(...);
However, if your compiler and library can support C++11, I suggest you to use std::function and std::bind:
void MyclasS::my_fn(std::function<bool(std::string)> fn)
{
fn("string");
}
Then call the my_fn function as
using namespace std::placeholders; // For `_1` below
Object obj;
myclassobject.my_fn(std::bind(&Object::aFunction, &obj, _1));
With std::function you can also use other function pointers or lambdas:
myclassobject.my_fn([](std::string s){ std::cout << s << '\n'; return true; });