I am new using c++ and browsing some source code I found that code in a class.
SDL_Surface *m_srf;
//...
operator SDL_Surface*&()
{
return m_srf;
}
It overloads both pointer (*) and reference or mem adress (&) operators?
I am new using c++ and browsing some source code I found that code in a class.
SDL_Surface *m_srf;
//...
operator SDL_Surface*&()
{
return m_srf;
}
It overloads both pointer (*) and reference or mem adress (&) operators?
它是一个转换运算符。它执行类型SDL_Surface*&
、id est、指向指针的引用类型的转换SDL_Surface
。
它是将对象转换为对指向 SDL_Surface 的指针的引用的转换。
那是一个转换操作符:一个叫做成员操作符的操作符Class::operator Type()
可以用来将一个类型的对象转换成一个类型Class
的对象Type
。
在这种情况下,它转换为对指向的指针的引用SDL_Surface
。因此,您可以在需要该类型的任何地方使用此类:
void set(SDL_Surface*& s) {s = whatever;} // needs a reference
void do_something(SDL_Surface*); // needs a pointer
my_class thingy;
set(thingy); // OK - sets thingy.m_srf
do_something(thingy); // OK - passes thingy.m_srf to the function