Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 12.01.2017
Сообщений: 104

Ошибка в производном классе: Не реализует наследуемый абстрактный член

05.11.2020, 09:25. Показов 836. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    abstract class Component
    {
        protected int num;
        public Component(int num)
        {
            this.num = num;
        }
         public abstract void Add(Component cmp);
         public abstract void Remove(Component cmp);
         public abstract string GetContent();
    }
 
    class Composite : Component
    {
        public override void Add(Component cmp)
        {
            throw new System.NotImplementedException();
        }
 
 
        public override string GetContent()
        {
            throw new System.NotImplementedException();
        }
 
        public override void Remove(Component cmp)
        {
            throw new System.NotImplementedException();
        }
    }
Ошибка:
"Composite" не реализует наследуемый абстрактный член "Component.GetContent()"
"Composite" не реализует наследуемый абстрактный член "Component.Add(Component)"
"Composite" не реализует наследуемый абстрактный член "Component.Remove(Component)"

Я недоумеваю. Когда я навожу на пустой Композит, VS2019 предлагает мне автоматически реализовать класс, ибо в нём нет реализации каждого из методов, причём дважды. Когда я соглашаюсь, она делает по дубликату каждого метода. И после этого жалуется на дубликаты, и на отсутствие реализации. Если даже удалить дубликаты, то будет жаловаться просто на отсутствие реализации. Как это работает?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2020, 09:25
Ответы с готовыми решениями:

Класс не реализует наследуемый абстрактный член
Вылазит ошибка, что класс не реализует наследуемый абстрактный член, относительно метода IsEqual. Подскажите в чем проблема? abstract...

Абстрактные классы, ошибка "Класс не реализует наследуемый абстрактный член"
Всем доброго времени суток. Я новичок в этом деле. Помогите с следующим вопросом. Выдает ошибки: ...

Абстрактные классы, ошибка "Класс не реализует наследуемый абстрактный член"
Пишет, Ошибка 2 "WindowsFormsApplication6.MFControllerBool" не реализует наследуемый абстрактный член...

5
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,437
05.11.2020, 09:38
Kujivunia, в этом коде нет такой проблемы. Зато есть другая: отсутствие у наследника конструктора, который будет пробрасывать в родителя параметр int num.
0
0 / 0 / 1
Регистрация: 12.01.2017
Сообщений: 104
05.11.2020, 09:41  [ТС]
В смысле нет, если VS не даёт мне скомпилировать этот код, ссылаясь на эти ошибки?

Разве наследник не должен сам наследовать конструктор?

Что значит "пробрасывать в родителя параметр int num"?
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,437
05.11.2020, 09:44
Цитата Сообщение от Kujivunia Посмотреть сообщение
В смысле нет
В прямом. У меня всё это собирается после того, как добавить конструктор:

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16141 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
05.11.2020, 12:32
Цитата Сообщение от Kujivunia Посмотреть сообщение
Разве наследник не должен сам наследовать конструктор?
Из Справочная информация. Что такое наследование?:
Не все члены базового класса наследуются производными классами. Следующие члены не наследуются:
  • Статические конструкторы, которые инициализируют статические данные класса.

  • Конструкторы экземпляров, которые вызываются для создания нового экземпляра класса. Каждый класс должен определять собственные конструкторы.

  • Методы завершения, которые вызываются сборщиком мусора среды выполнения для уничтожения экземпляров класса.
1
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
06.11.2020, 05:12
Цитата Сообщение от Kujivunia Посмотреть сообщение
Разве наследник не должен сам наследовать конструктор?
Нет. Всегда должен выбираться конструктор. То, что вы его не указываете - не значит что он не выбран (речь идет про конструктор по умолчанию).

Если мы не указываем конструктор по умолчанию, то студия (или компилятор) дописывают его за нас.
C#
1
2
class A {} // конструктор дописывает студия
class B : A {} // конструктор дописывает студия
Если мы указываем какой то конструктор с параметром / параметрами, но не указываем конструктор по умолчанию (а это как раз ваш случай), то студия (компилятор) не дописывают его по умолчанию, как итог его и нет.
C#
1
2
3
4
5
class A
{
    //A() { } // не существует, так как мы не указали его явно
    A(int val) { } // существует
}
Если в производном классе мы не указываем конструктор базового класса, то используется конструктор по умолчанию
C#
1
2
3
4
5
class A { }
class B : A
{
    B() /*: base()*/{ } // комментарий дописывается студией автоматически
}
Как итог отвечаю на ваш вопрос: чтобы создать наследника - надо создать базовый. В вашем случаи есть только 1 конструктор (с параметром), а наследник как бы "пытается" создать по умолчанию, но его нет. И чтобы все работало, надо вызвать "нужный", а в данном случаи единственный конструктор базового класса. Товарищ выше пример привел.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2020, 05:12
Помогаю со студенческими работами здесь

Ошибка при вызове виртуальной функции в производном классе
Здравствуйте, извините, если подобная тема появлялась, но либо у меня руки не от туда растут, либо ее небыло... проблема в следующем:...

Конструктор в производном классе
Всем доброго времени суток! есть класс Строка (CStr) class CStr { protected: int length; char *str; public: CStr(); ...

Оператор вывода в производном классе
Как из производного класса вызвать перегруженный оператор вывода из базового класса? Я показал в комментарии где нужно это вставить ...

Вызов оператора= в производном классе
#include <iostream> #include <vector> #include <numeric> using namespace std; template <class T> class Vector: public...

Пустое поле в производном классе
Добрый день! Не могли бы вы подсказать ответ на такой вопрос: Есть базовый класс: public class AutoOrganization { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru