Pomoc w zrozumieniu kodu.

0

Witam. W pewnym obiekcie mam stworzoną funkcje, w której znajduje się coś czego nie rozumiem.

int rcstring::atoi()
{
    return ::atoi(data->s);
}
 

Co robią te dwa dwukropki przed atoi ? Nie mogę nigdzie znaleźć nic na ten temat .
Jak będzie trzeba to mogę wkleić cały kod.

2

:: to operator zakresu.

Tutaj: int rcstring::atoi() oznacza to, że atoi jest funkcją składową klasy rcstring, tzn znajduje są w jej zakresie; w jej przestrzeni nazw.
Tutaj: return ::atoi(data->s); oznacza, że wywołujesz funkcję atoi z globalnej przestrzeni nazw. :: powoduje w tym wypadku "wyjście na zewnątrz", tzn poza przestrzeń nazw klasy rcstring. Bez tego operatora oznaczałoby to wywołanie rekurencyjnie tej składowa funkcja w której jesteśmy, ale byłby błąd, bo parametry się nie zgadzają. Zamiast tego można było użyć std::atoi(data->s); z nagłówka <cstdlib>.

0

Gdyby nie było tego dwukropka to byłoby rekurencyjne wołanie tej samej metody (choć pewnie się nie skompiluje z powodu różnicy parametrów). A tak to wiadomo, że chcesz wywołać globalną, biblioteczną funkcję atoi().

1 użytkowników online, w tym zalogowanych: 0, gości: 1