Why do you have a method called getName() that sets a name, surely it should be called setName()?
In C it's quite common to pass the desired results through pointer arguments, and make the method return a boolean or error code to indicate success. The Windows API is full of those calls. However, in C++ that shouldn't be necessary anymore since exceptions are part of the language. Instead of returning true / false, the name should be returned and an exception should be thrown if the name could not be returned.
No, you can't pass a C++ String to Java. It needs to be converted to char* which can then be converted to a Java String using JNI's NewStringUTF function. The other way around is a bit more cumbersome, as you first need to call GetStringUTFChars to get a const char*, then ReleaseStringUTFChars when you're done with it.