void Character::loadSprite()
{
sf::Texture texture;
if (!texture.loadFromFile(resourcePath() + "images/" + type + ".png"))
{
throw new std::exception();
}
sprite = new sf::Sprite(texture);
sprite->setPosition(100, 200);
}
The texture is destroyed when the function exists, so the sprite is left with a pointer to an invalid memory zone. The texture must live as long as the sprite uses it.
And don't dynmically allocate the exceptions that you throw.