#c #operators
#c #операторы
Вопрос:
Я относительно новичок в C , и это объявление меня смутило:
Service.h:
class ServiceHandle {
public:
ServiceHandle(SC_HANDLE h) : handle(h) {}
...
operator SC_HANDLE() const {return handle;}
protected:
SC_HANDLE handle;
};
Я создал ServiceHandle
объект с помощью других средств, отличных от конструктора, указанного здесь. Я хотел бы получить фактическое SC_HANDLE
значение для передачи ChangeServiceConfig
, как мне к нему добраться? Я предполагаю, что это как-то связано с оператором, но я не могу понять, как его использовать.
Ответ №1:
Вы просто используете объект типа ServiceHandle
в выражении , которое ожидает tht SC_HANDLE
. Оператор, о котором вы говорите, является оператором приведения к SC_HANDLE
. Этот оператор «используется» автоматически.
Ответ №2:
Это оператор приведения. Это вызвало бы это:
ServiceHandle s(some handle);
SC_HANDLE h = (SC_HANDLE)s;
Комментарии:
1.
SC_HANDLE h = s;
будет достаточно. Избегайте приведений в стиле C, таких как fire.2. Согласен. Написание приведения в стиле C заставило меня почувствовать себя немного больным.