I might be wrong on this, but I believe in main, you're printing out the size of the array, but in your member class, you're printing out the size of the pointer, which is char in this case, so you get 4 back. I'm a little rough on it, but believe it's working that way for a reason. Why are you using a pointer instead of an array anyways?
Edit: I believe you might be able to dereference temp to get the size of the array.