J'ai cette classe avec une méthode d'instance nommée ouverte et besoin d'appeler une fonction déclarée en C aussi appelé ouvert. Suit un échantillon:Appel en C++ une fonction non membre à l'intérieur d'une classe avec une méthode avec le même
void SerialPort::open()
{
if(_open)
return;
fd = open (_portName.c_str(), O_RDWR | O_NOCTTY);
_open = true;
}
Lorsque je tente de le compiler (en utilisant GCC) Je reçois l'erreur suivante:
error: no matching function for call to 'SerialPort::open(const char*, int)'
J'inclus tous les en-têtes C nécessaires. Quand je change le nom de la méthode par exemple open2 Je n'ai pas de problèmes de compilation.
Comment puis-je résoudre ce problème. Merci d'avance.
En note, vous devriez éviter de commencer vos noms avec "_". – Bill
Je ne vois pas pourquoi? Et c'est très pratique pour les variables membres. – jassuncao
C'est un point de la norme: la plupart des identifiants commençant par '_' sont réservés. La liste exacte est un peu compliquée. Il va quelque chose comme: y compris 2 consécutifs '_', commençant par' _' suivi d'une majuscule, etc ... et puisque vous n'êtes pas susceptible de mémoriser la liste exacte, il est préférable de l'éviter. –