通常、書籍は通常、構造体をラップする際に変換演算子の使用を推奨しません。たとえば、Cのchar配列のラッパーであると考えられるC++文字列は、変換演算子を提供しません。代わりに、メソッドc_str()
を与えます。この場合、変換演算子は有効ですか?
しかし、私は真剣に私のケースが例外かもしれないと思う。私はSDL_Surface.
をラップしています。ここにクラス宣言があります。この場合
/** Wraps up SDL_Surface **/
class surface
{
SDL_Surface* _surf;
public:
/** calls SDL_LockSurface().
** throws surface_lock_exception on failure.
**/
void lock();
/** calls SDL_UnlockSurface() **/
void unlock();
/** calls SDL_LoadBMP().
** throws image_load_exception on failure.
**/
void load_bmp(const string&);
/** calls SDL_FreeSurface(). **/
void free();
/** destructor. Also free()s the internal SDL_Surface. **/
~surface();
};
、私は真剣に、私はSDL_Surface*
を必要とする他のSDL機能と容易に互換性のためにSDL_Surface*
に変換演算子を追加するべきだと思います。
あなたはどう思いますか:
- 変換演算子が賢明だろうか?
- または
c_str()
のような方法を使用する必要がありますか? - もう1つ、より良い解決策がありますか?
+1、良い解決策、それは私にJavaを思い出させる:D。 – ApprenticeHacker