AnimatedSpriteをコピーすることになっています。*thisオブジェクトを変更するという不幸な副作用があると私は考え直しています。
副作用なしでこの機能を実装するにはどうすればよいですか?
編集:
新しい答えに基づいて、質問は実際には次のようになります。副作用のないパブリック名前付きメソッドを使用して非パブリック代入演算子を実装するにはどうすればよいですか?(タイトルを変更しました)。
public:
AnimatedSprite& AnimatedSprite::Clone(const AnimatedSprite& animatedSprite) {
return (*this = animatedSprite);
}
protected:
AnimatedSprite& AnimatedSprite::operator=(const AnimatedSprite& rhs) {
if(this == &rhs) return *this;
destroy_bitmap(this->_frameImage);
this->_frameImage = create_bitmap(rhs._frameImage->w, rhs._frameImage->h);
clear_bitmap(this->_frameImage);
this->_frameDimensions = rhs._frameDimensions;
this->CalcCenterFrame();
this->_frameRate = rhs._frameRate;
if(rhs._animation != nullptr) {
delete this->_animation;
this->_animation = new a2de::AnimationHandler(*rhs._animation);
} else {
delete this->_animation;
this->_animation = nullptr;
}
return *this;
}