With C++11 there's no need to inherit from sf::NonCopyable since you can simply delete the copy constructor now.
In the same regard you should use smart pointers instead of raw pointers with manual memory management. Your current manual memory management implementation leaks memory, since you never delete the allocated states, with smart pointers you can just leave the code as is and the smart pointers will automatically release the memory.
Does the provided code even compile? Because in your registereState function you return the stack, even though the function has void as return type. Plus I think you can't and wouldn't want to call the stack (constructor) like that.
Please use / in all your paths, especially in include paths. Even on Windows that will work fine and you don't run the risk of \ getting recognized as escape character.
A personal taste that everyone is welcome to disagree on, is the use of *.hpp for C++ headers instead of *.h.
Also next time make sure to use the [code=cpp][/code] tags, so I don't have to insert them for you.