Błąd nie może wywołać funkcji członka bez obiektu C ++

Błąd nie może wywołać funkcji członka bez obiektu C ++
Język programowania jest pakietem różnych pojęć, wbudowanych funkcji i operacji; Wymyśla również wiele błędów. Błędy te mogą być typu logicznego, błędów składniowych i innych. Możesz uzyskać wiele błędów podczas kodowania podczas popełniania błędów logicznych lub składniowych w kodzie. Jednym z błędów z wielu z tych wyjątków jest „nie można wywołać funkcji członka bez obiektu”. Występuje, gdy próbujemy wywołać funkcję w naszym programie bez tworzenia obiektu klasowego. Tak więc ten przewodnik zawiera przykłady, aby ten błąd się zdarzył i rozwiązanie go rozwiązania. Upewnij się, że pracowałeś nad Ubuntu 20.04 System i uruchom terminal za pośrednictwem „Ctrl+Alt+T”. Zacznijmy od przykładów.

Przykład 01:

Zacznijmy nasz pierwszy przykład, aby rozwinąć, w jaki sposób otrzymujemy błąd „Nie możemy wywołać funkcji członka bez obiektu” w kodzie C ++. Pierwszą rzeczą, którą musimy zrobić, jest utworzenie pliku C ++. Ten plik można utworzyć za pomocą edytora tekstu w eksploratorze plików lub w powładzie. Możesz spróbować otworzyć go z edytorem VIM, edytorem tekstu lub innym edytorem, takim jak GNU Nano Editor. Tak więc bezpośrednio otwieraliśmy ten nowo utworzony plik w Edytorze GNU Nano za pomocą polecenia „Nano”. Teraz pusty nowo utworzony plik jest uruchamiany w nano edytorze i gotowy do użycia.

Rozpoczynamy kod z dodaniem niektórych plików nagłówka, i.mi., „Iostream”. Możesz użyć przestrzeni nazw „STD” w kodzie, jednocześnie deklarując ją przed główną funkcją. W przeciwnym razie musisz użyć słowa kluczowego „STD” z każdą klauzulą ​​Cout i CIN w programie. Zainicjowaliśmy to przed główną metodą przy użyciu słowa kluczowego „za pomocą”. W kodzie stworzyliśmy prostą klasę o nazwie „A”. Ta klasa zawiera pojedynczą funkcję zdefiniowaną przez użytkownika o nazwie „show ()”. Funkcja zawiera deklarację zmiennej typu znakowego o nazwie „A”. Pierwsza instrukcja COUT tej funkcji prosi o dodanie znaku przez użytkownika. Klauzula „CIN” pozwala użytkownikowi dodać tę postać do skorupy i zapisać ją na zmiennej „A”. Ostatnia instrukcja Cout została tutaj użyta do wyświetlania znaku na powładzie, którą użytkownik ma wprowadzenie.

Teraz klasa się skończyła i rozpoczęliśmy główną metodę. Czas wywołać funkcję, aby ją wykonać bez użycia niczego innego. Tak więc po prostu użyliśmy nazwy klasy „A” z „::”, aby wywołać funkcję „show ()” w głównej metodzie. Główna metoda jest tutaj zamknięta. Jesteśmy gotowi zapisać ten kod za pomocą Ctrl+S, ponieważ jest już kompletny.

Wróć do terminalu, używając „Ctrl+x. Teraz najwyższy czas skompilować kod z wbudowanym kompilatorem C ++ Ubuntu 20.04. Zatem użyliśmy instrukcji kompilatora „G ++”, aby po prostu skompilować plik kodu i sprawdzić, czy jest on bezbłędny, czy nie. W kompilacji pokazuje błąd. Oznacza to, że nie możemy po prostu wykonać ani wywołać funkcji show () klasy „A” bez tworzenia obiektu tej klasy.

Musimy więc ponownie zaktualizować plik kodu. Skorzystaj ponownie z edytora Nano i rozwiąż ten błąd. Więc stary plik jest ponownie otwarty. Musimy tylko zmienić funkcję Main (), aby wymknąć się do tej pory ten błąd. Stworzyliśmy więc obiekt „OBJ” klasy „A”. Teraz ten obiekt „OBJ” został tutaj użyty do wywołania funkcji show () klasy „a” za pomocą „kropki” między nazwą obiektu a nazwą funkcji. Zapisz kod, aby odzwierciedlić zmiany w wykonaniu za pomocą prostego klawisza skrótu, i.mi., „Ctrl+S”. Zaktualizowany kod został wyświetlony na poniższym obrazku. Wróćmy do terminala, aby skompilować zaktualizowany kod za pomocą „Ctrl+X”.

Użyłem instrukcji kompilatora „G ++” do celów kompilacji kodu. Tym razem nie mamy błędu. Po wykonaniu kodu otrzymaliśmy wynik pokazany poniżej. Poprosił o wprowadzenie postaci, dodając „A”. W zamian wyświetlił znak na skorcie. Korzystanie z obiektu do wywołania funkcji show ().

Przykład 02:

Miejmy kolejny przykład uzyskania tego samego błędu i rozwiązania go później. Więc otworzyliśmy błąd pliku.CC i utworzył poniższy kod. Ten kod został uruchomiony od pliku nagłówka iostream, przestrzeni nazw STD i zakończona główną metodą. Nasz program zawiera dwie klasy, A i B. A jest klasą rodzicielską, a B to klasa dziecięca A dziedziczenia jej właściwości tutaj. Klasa nadrzędna A zawiera funkcję „print ()”, mając pojedynczą instrukcję pokazującą, że jest to funkcja klasy nadrzędnej. Klasa dziecka zawiera funkcję „show ()” z instrukcją Cout pokazującą, że metoda klasy dzieci została wykonana. Funkcja main () zawiera prostą metodę „::”, aby wywołać obie metody za pomocą ich odpowiednich klas, i.mi., „A” i „B”. Po prostu uruchommy ten kod, aby zobaczyć, jak to działa.

Kiedy skompilowaliśmy kod, otrzymaliśmy błąd wyjątku, mówiąc „Nie można wywołać funkcji członka bez obiektu” dla obu wywołań funkcji. Dzieje się tak, ponieważ nie utworzyliśmy obiektów, aby wywołać funkcje odpowiednich klas i zrobiliśmy to bezpośrednio.

Po prostu otwórzmy plik ponownie za pomocą „Nano Editor”. Nie ma potrzeby zmieniać całego kodu; Tylko metoda main () wymaga niewielkiej modyfikacji. Ponieważ możesz to spojrzeć, stworzyliśmy obiekt OBJ1 klasy nadrzędnej „A” i użyliśmy go do wykonania metody wywołania funkcji do print (). Następnie stworzyliśmy obiekt „OBJ2” klasy B klasy B i wykonaliśmy wywołanie funkcji, aby funkcjonować „show ()” tutaj, aby go wykonać. Możemy również uniknąć tworzenia obiektu klasy nadrzędnej „obj1” i nadal wywoływać jego funkcję za pomocą obiektu klasy dzieci „obj2”. Zarówno funkcje w klasach nadrzędnych, jak i dzieci mają różne nazwy, więc nie spowoduje żadnego błędu. Zapiszmy plik kodu z Ctrl+S i wróćmy do terminala, aby sprawdzić, czy błąd jest rozwiązany, czy nie.

Po kompilacji zaktualizowanego kodu możemy rzucić okiem, że błąd „nie może wywołać funkcji członka bez jego obiektu”, a kod jest gotowy do wykonania. Zarówno funkcje klasy nadrzędnej, jak i dzieci zostały wykonane, jak pokazano po uruchomieniu kodu.

Wniosek:

Ten artykuł zawiera prostą demonstrację tworzenia błędu „Nie można wywołać funkcji członka bez obiektu” w programie C ++. Wykorzystaliśmy tutaj koncepcję klas, aby to umożliwić. Następnie wykazaliśmy również rozwiązanie rozwiązania tego błędu w ramach przykładów. Mamy nadzieję, że ten artykuł będzie pomocny dla wszystkich naiwnych użytkowników C ++.