0

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?

4

3 回答 3

3

它是一个转换运算符。它执行类型SDL_Surface*&、id est、指向指针的引用类型的转换SDL_Surface

于 2013-09-17T15:58:21.777 回答
1

它是将对象转换为对指向 SDL_Surface 的指针的引用的转换。

于 2013-09-17T15:59:11.030 回答
1

那是一个转换操作符:一个叫做成员操作符的操作符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
于 2013-09-17T16:02:26.883 回答