mam tej klasy z metody instancji o nazwie otwarty i trzeba wywołać funkcję zadeklarowane w C zwane również otwarty. Następuje próba:Wywołanie w C++ non funkcji członka wewnątrz klasy z metodą z tego samego
void SerialPort::open()
{
if(_open)
return;
fd = open (_portName.c_str(), O_RDWR | O_NOCTTY);
_open = true;
}
Gdy próbuję go skompilować (przy użyciu GCC) pojawia się następujący błąd:
error: no matching function for call to 'SerialPort::open(const char*, int)'
włączyłem wszystkie wymagane nagłówki C. Kiedy zmieniam nazwę metody na przykład open2 Nie mam problemów z kompilacją.
Jak mogę rozwiązać ten problem. Z góry dzięki.
Na marginesie, należy unikać wpisywania swoich nazw za pomocą "_". – Bill
Nie rozumiem, dlaczego? Jest bardzo przydatny w przypadku zmiennych członkowskich. – jassuncao
Jest to punkt standardu: większość identyfikatorów rozpoczynających się od '_' jest zarezerwowanych. Dokładna lista jest nieco skomplikowana. To coś w rodzaju: w tym 2 kolejne '_', rozpoczynające się od' _', po których następuje wielkie litery, itd ... a ponieważ nie jesteś w stanie zapamiętywać dokładnej listy, najlepiej tego unikać. –