Я пытаюсь инкапсулировать некоторые функции из библиотеки сокетов C в свой собственный класс C ++. Я хотел бы определить функцию-член, которая использует то же имя, что и соответствующая ей функция C, но с другой сигнатурой. Например, я хотел бы написать функцию
ssize_t MyClass::write(const void *buf);
, который звонит на
ssize_t write(int fd, const void *buf, size_t count);
При компиляции я получаю следующие ошибки
error: no matching function for call to ‘MyClass::write(int&, const char*&, size_t)’
note: candidates are: ssize_t MyClass::write(const char*)
У меня есть правильные операторы #include
для вызова библиотеки сокетов C, но мое определение функции записи, похоже, затеняет ее. Если я изменю имя своей функции, определенной классом, на что-то другое, то все будет работать нормально.
Я вполне уверен, что изменение имени моей функции будет моим окончательным решением, но кто-то может сказать мне имя правила именования C ++, которое вызывает такое поведение? Я хотел бы прочитать об этом, чтобы я знал, что я делаю в будущем.