С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433

Error C4716: Figure::border: должна возвращать значение

30.09.2019, 14:50. Показов 728. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
C++
1
2
3
4
5
6
7
class Figure
{
public: 
    virtual double border()/*=0*/ {} // периметр
    virtual double square()=0 {} // площадь
    virtual void draw() {} // отрисовка фигуры
};
error C4716: Figure::border: должна возвращать значение

Вопрос следующий: почему синтаксис method()=0 ретанит 0 ? Где-нибудь можно про это почитать? И почему кроме 0 ничего поставить больше нельзя?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2019, 14:50
Ответы с готовыми решениями:

Error C4716: mean: должна возвращать значение
Пожалуйста, подскажите в чем ошибка. При запуске выдает ошибку: «error C4716: mean: должна возвращать значение». Два дня голову ломал,...

error C4716: Distance::getdist: должна возвращать значение
уменя visual c++ 2010 professional.как решить проблему ? #include <iostream> using namespace std; /// class Distance { ...

Ошибка C4716 Complex<int>::operator+=: должна возвращать значение
У меня vs 2015 c++. Необходимо создать шаблон класса для представления 2-х компонентных комплексных чисел и реализовать перегруженные...

5
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
30.09.2019, 15:35
Если Вы объявляете функцию чистой виртуальной функцией,
то это означает, что в базовом классе у нее нет реализации.
Так что, никакого кода для нее писать нельзя (в том числе и пустого, хотя, как вы можете сделать его пустым, если собираетесь возвращать значение типа double).
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
30.09.2019, 17:51
Цитата Сообщение от Timurs Посмотреть сообщение
Вопрос следующий: почему синтаксис method()=0 ретанит 0 ?
Что такое "ретанит" и почему вы решили, что этот синтаксис "ретанит 0"? Нет, этот синтаксис ничего не "ретанит". Это синтаксис чисто виртуальной функции.

Компилятор просто говорит вам, что не-void функции должны возвращать значение. К =0 это все не имеет никакого отношения.

Также, С++ не позволяет определять = 0 функции прямо в определении класса. Если вы написали = 0, то писать тело функции { ... } прямо сразу здесь уже нельзя.

Цитата Сообщение от Timurs Посмотреть сообщение
И почему кроме 0 ничего поставить больше нельзя?
Ну почему нельзя? Можно, например, = default или = delete.

Цитата Сообщение от zss Посмотреть сообщение
Так что, никакого кода для нее писать нельзя (в том числе и пустого, хотя, как вы можете сделать его пустым, если собираетесь возвращать значение типа double).
Код для чисто виртуальной функции писать, разумеется, можно. Это же фактически FAQ.

Другое дело, что определять =0 функции прямо в классе нельзя. Если вы хотите сделать определение для =0 функции, то делать это нужно отдельно, за пределами класса.
1
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
30.09.2019, 18:13  [ТС]
zss, TheCalligrapher, понял, что это называется чистой виртуальной функцией. Под "ретанит" имел ввиду возвращает. Какой смысл несет =0, =default и =delete ? Это говорит нам о том, что функция чисто виртуальная?

p.s. в интернете увидел нечто подобное и понял, что именно это мне и надо
p.p.s. буду признателен если поможете Throw в конструкторе, проблема со scoupe объектов поправить код

Добавлено через 11 минут
TheCalligrapher, спасибо, второе Ваше сообщение не заметил, разобрался!
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Другое дело, что определять =0 функции прямо в классе нельзя.
А почему тогда компилятор не ругается и вот эти ребята https://ipc.susu.ru/8506-2.html прямо в классе пишут ?
C++
1
2
3
4
class Shape {
public:
  virtual double square()=0; // чисто виртуальный метод
};
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
30.09.2019, 19:40
Цитата Сообщение от Timurs Посмотреть сообщение
Какой смысл несет =0, =default и =delete ? Это говорит нам о том, что функция чисто виртуальная?
= 0 говорит нам о том, что функция чисто виртуальная. = default и = delete - это совсем из другой оперы.

Цитата Сообщение от Timurs Посмотреть сообщение
А почему тогда компилятор не ругается и вот эти ребята https://ipc.susu.ru/8506-2.html прямо в классе пишут ?
C++
1
2
3
4
class Shape {
public:
  virtual double square()=0; // чисто виртуальный метод
};
Еще раз: нельзя прямо в классе определять чисто виртуальную функцию. То есть нельзя сразу после = 0 указывать еще и тело функции { ... }. У "этих ребят" по ссылке это правило нигде не нарушается. В вашем коде - нарушается.
0
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
30.09.2019, 19:44  [ТС]
TheCalligrapher, понял, у них объявление же только, спасибо ещё раз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2019, 19:44
Помогаю со студенческими работами здесь

Ошибка в функции (function: должна возвращать значение)
ребят, компилятор выдает error C4716: function: должна возвращать значение что это значит? как с этим бороться? #include...

Функция с типом char, которая должна возвращать интовое значение
Всем привет. Странное дело. Есть функция с типом char, которая должна возвращать интовое значение в виде площади квадрата (так по заданию...

Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение
#include #include #include using namespace std; void displayExplanation(void) { cout &lt;&lt; &quot;Eta porgramma sumiryet...

Пишет func: должна возвращать значение,как правильно исправить код?
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; double func(int x, int t) { double y, a, b; b = pow(log(x),...

Каждая ветвь должна возвращать значение
Здравствуйте, форумчане. Столкнулся с проблемой: создал функцию возвращающую bool, и принимающую массив и еще пару параметров. Суть ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru