ゲーム用のシンプルなグラフィックエンジンを作成しています。
これはインターフェース部分です:
class Texture { ... };
class DrawContext
{
virtual void set_texture(Texture* texture) = 0;
}
これは実装部分です:
class GLTexture : public Texture
{
public:
...
GLuint handle;
};
void GLDrawContext::set_texture(Texture* texture)
{
// Check if it's GLTexture, otherwise do nothing.
if (GLTexture* gl_texture = dynamic_cast<GLTexture*>(texture))
{
glBindTexture(GL_TEXTURE_2D, gl_texture->handle);
}
}
ここでdynamic_castを使用するのは理にかなっていますか?それを回避する方法はありますか?