ERROR: невозможно вызвать функции without object C++

Как преобразовать строку в int в C++ Программирование и разработка

Язык программирования представляет собой набор различных концепций, встроенных функций и операций; это также приводит к множеству ошибок. Эти ошибки могут быть логического типа, синтаксические ошибки и другие. Вы можете получить много ошибок при написании кода, когда делаете в коде логические или синтаксические ошибки. Одна из ошибок многих из этих исключений — «невозможно вызвать функцию-член без объекта». Это происходит, когда мы пытаемся вызвать функцию в нашей программе, не создавая объект класса. Итак, это руководство содержит примеры возникновения этой ошибки и решение для ее устранения. Убедитесь, что вы работали в системе Ubuntu 20.04, и запустите терминал с помощью «Ctrl+Alt+T». Начнем с примеров.

Пример 1

Давайте начнем наш первый пример, чтобы уточнить, как мы получаем ошибку «невозможно вызвать функцию-член без объекта» в коде C++. Итак, первое, что нам нужно сделать, это создать файл c++. Этот файл можно создать с помощью любого текстового редактора в проводнике или в оболочке. Вы можете попробовать открыть его с помощью редактора vim, текстового редактора или любого другого редактора, например редактора GNU Nano. Итак, мы напрямую открываем этот вновь созданный файл в редакторе GNU Nano с помощью команды «nano». Теперь пустой вновь созданный файл запускается в редакторе Nano и готов к использованию.

Мы начали наш код с добавления некоторых заголовочных файлов

Мы начали наш код с добавления некоторых заголовочных файлов, т. е. «iostream». Вы можете использовать пространство имен «std» в коде, объявляя его перед основной функцией. В противном случае вам придется использовать ключевое слово «std» с каждым предложением cout и cin в программе. Итак, мы инициализировали его перед основным методом с помощью ключевого слова «using». Мы создали в коде простой класс с именем «A». Этот класс содержит одну определяемую пользователем функцию с именем «show()». Функция содержит объявление переменной символьного типа с именем «a». Первый оператор cout этой функции запрашивает символ, который должен быть добавлен пользователем. Предложение «cin» позволяет пользователю добавить этот символ в оболочку и сохранить его в переменной «a». Последний оператор cout использовался здесь для отображения символа в оболочке, который ввел пользователь.

Читайте также:  Golang Context

Теперь класс закончился, и мы запустили основной метод. Пришло время вызвать функцию, чтобы выполнить ее, не используя ничего другого. Итак, мы просто использовали имя класса «A» с «::» для вызова функции «show()» в основном методе. Основной метод здесь закрыт. Мы готовы сохранить этот код с помощью Ctrl+S, так как он уже готов.

Вернитесь к терминалу, используя «Ctrl + X

Вернитесь к терминалу, используя «Ctrl + X. Теперь пришло время скомпилировать код с помощью встроенного в Ubuntu 20.04 компилятора c++. Таким образом, мы использовали здесь инструкцию компилятора «g++», чтобы просто скомпилировать файл кода и посмотреть, не содержит ли он ошибок. При компиляции показывает ошибку. Это означает, что мы не можем просто выполнить или вызвать функцию show() класса «А» без создания объекта этого класса.

Теперь пришло время скомпилировать код с помощью встроенного в

Итак, нам нужно еще раз обновить файл кода. Воспользуйтесь редактором nano еще раз и устраните эту ошибку. Таким образом, старый файл снова открывается. Пока нам нужно изменить только функцию main(), чтобы избежать этой ошибки. Итак, мы создали объект «obj» класса «А». Теперь этот объект «obj» использовался здесь для вызова функции show() класса «A», используя «точку» между именем объекта и именем функции. Сохраните код, чтобы отразить изменения при выполнении, используя простую горячую клавишу, т. е. «Ctrl+S». Обновленный код показан на изображении ниже. Вернемся к терминалу, чтобы скомпилировать обновленный код с помощью «Ctrl+X».

Теперь этот объект «obj» использовался здесь для вызова

Использовал инструкцию компилятора «g++» для компиляции кода. На этот раз у нас нет ошибки. При выполнении кода мы получили результат, показанный ниже. Он попросил ввести символ, добавив «А». В свою очередь, он отображал символ на оболочке. Использование объекта для вызова функции show().

Использование объекта для вызова функции show

Пример 2

Давайте рассмотрим еще один пример получения той же ошибки и последующего ее устранения. Итак, мы открыли файл error.cc и создали показанный ниже код. Этот код был запущен из заголовочного файла iostream, пространство имен std, и завершился в основном методе. Наша программа содержит два класса, A и B. A — родительский класс, а B — дочерний класс A, наследующий здесь его свойства. Родительский класс A содержит функцию «print()», имеющую один оператор, показывающий, что это функция родительского класса. Дочерний класс содержит функцию «show()» с оператором cout, показывающим, что метод дочернего класса был выполнен. Функция main() содержит простой метод «::» для вызова обоих методов с использованием соответствующих классов, т. е. «A» и «B». Давайте просто запустим этот код, чтобы посмотреть, как он работает.

Давайте рассмотрим еще один пример получения той же

Когда мы скомпилировали код, мы получили ошибку исключения, говорящую «невозможно вызвать функцию-член без объекта» для обоих вызовов функций. Это потому, что мы не создавали объекты для вызова функций соответствующих классов, а делали это напрямую.

Давайте просто еще раз откроем файл с помощью «наноредактора»

Давайте просто еще раз откроем файл с помощью «наноредактора». Нет необходимости менять весь код; только метод main() требует небольшой модификации. Как вы можете видеть, мы создали объект obj1 родительского класса «A» и использовали его для вызова функции для метода print(). Затем мы создали объект «obj2» дочернего класса B и сделали здесь вызов функции «show ()», чтобы выполнить его. Мы также можем избежать создания объекта родительского класса «obj1» и по-прежнему вызывать его функцию, используя объект дочернего класса «obj2». Обе функции в родительском и дочернем классах имеют разные имена, поэтому это не вызовет никакой ошибки. Давайте просто сохраним файл кода с помощью Ctrl+S и вернемся в терминал, чтобы посмотреть, устранена ли ошибка или нет.

Мы также можем избежать создания объекта родительского класса «obj1»

После компиляции обновленного кода мы видим, что ошибка «невозможно вызвать функцию-член без ее объекта» окончательно устранена, и код готов к выполнению. Функции родительского и дочернего классов выполнялись, как показано при запуске кода.

Функции родительского и дочернего классов выполнялись

Заключение

Эта статья содержит простую демонстрацию создания ошибки «невозможно вызвать функцию-член без объекта» в программе на C++. Мы использовали концепцию классов, чтобы сделать это возможным. Затем мы также продемонстрировали решение для устранения этой ошибки в примерах. Мы очень надеемся, что эта статья будет полезна всем тем, кто не знаком с C++.

Оцените статью
bestprogrammer.ru
Добавить комментарий