通常,书籍通常不鼓励在包装 c 结构时使用转换运算符。例如,c++ 字符串(被认为是)是 C 字符数组的包装器,它不提供转换运算符。相反,它给出了方法c_str()
。
但是,我认真地认为我的情况可能是个例外。我正在总结一个SDL_Surface.
Here's class声明。
/** 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_Surface*
.
你觉得怎么样:
- 转换操作员会谨慎吗?
- 或者我应该使用类似的方法
c_str()
吗? - 还是有其他更好的解决方案?