通常、本は通常、c構造体をまとめるときに変換演算子の使用を推奨していません。たとえば、C文字列のラッパーである(と思われる)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()
ますか? - または、別のより良い解決策はありますか?