Static data members have to be defined outside the class (recommended in .cpp files), anyway - except integral constants.
Write in Missile.cpp:
sf::Image Missile::Image = Missile::InitImage();
Where Missile::InitImage is a static member function returning an sf::Image. Error checking gets more difficult like that, either you have to store a separate flag if initialization was successfull or you can use exceptions. Like this the sf::Image is guaranteed to be initialized before any Missile constructor call.
But static data can be dangerous because the initialization order in different modules in indeterminate. This can lead to problems if some static variables depend on others. Not very relevant for your example. Nevertheless, another possibility would be a singleton-like member function which returns a reference to a sf::Image. This function initializes the image at its first call. Inside the class, the image is always accessed via that function.
static sf::Image& GetImage()
{
static sf::Image Image;
return Image;
}
In my opinion, the best method is a separate class which manages the resources. Loading errors can easily be spotted and treated at a central place. If every class is responsible for its resources itsself, this can become confusing and unclear, especially when the project grows.