У меня есть базовый класс, в котором есть чисто виртуальная функция, и с помощью этой функции я хочу переопределить ее в других производных классах (в некоторых из них, если это возможно, с другим количеством параметров).Итак, в подклассе MergeSort у меня есть метод MSort, которому потребуется другое количество параметров, поскольку он выполняется рекурсивно.
Итак, наличие этой функции на данный момент с этими параметры. Я получаю эту ошибку.
«MergeSort:» не может создать экземпляр абстрактного класса. НО, если я переопределяю метод Sort из базового класса, он работает нормально, но мне не нужен один параметр.
Я также пытался объявить другую виртуальную функцию с другим количеством параметров и определить это в классе MergeSort, и я получаю то же самое.
Я также хотел бы уточнить, что у меня есть другие подклассы для разных алгоритмов (пузырьковая сортировка, сортировка вставкой и т. д.), которые реализованы аналогично MergeSort (конструктор и функция сортировки), но функция сортировки имеет такое же количество параметров (только один, используемый для графического интерфейса), как и в базовом классе ниже.
Так и есть. возможно ли иметь переопределенный метод с другим количеством параметров? Или какое-то другое решение того, что я сказал выше?
// BASE CLASS
// Forward declaration
class Interface;
/**
* Base class from which the sorting algorithms classes will inherit (Polymorphic class)
* The base class will allow us to create a sequence with n elements
*/
class SortingAlgorithms
{
protected:
std::vector sequence; // vector which will contain a randomized sequence
std::vector sequenceCpy; // a copy of sequence used for interaction features
sf::RenderWindow& window; // initializes the window
int minimum, maximum; // the range in which the elements will be randomized
int elements; // the number of elements which will be initialized
public:
SortingAlgorithms();
/** SortingAlgorithms() - class constructor which initializes the sequence
* @param min - the minimum value for randomizing
* @param max - the maximum value for randomizing
* @param els - the number of elements to generate
* @param win - since the window will be initialized only once (singleton pattern);
* it will be needed to pass on this object to almost every function that has
graphics features
*/
SortingAlgorithms(int min, int max, int els, sf::RenderWindow& win);
// A pure virtual function for overriding and param init which is what I described about win param from SortingAlgorithms constructor
virtual void Sort(std::unique_ptr& init) = 0;
};
class MergeSort : public SortingAlgorithms
{
public:
MergeSort(int min, int max, int els, sf::RenderWindow& win);
void Merge(std::unique_ptr& init, int first, int mid, int last);
void MSort(std::unique_ptr& init, int first, int last);
};
Подробнее здесь: https://stackoverflow.com/questions/635 ... tion-issue
Проблема с чисто виртуальной функцией ⇐ C++
Программы на C++. Форум разработчиков
1730147430
Anonymous
У меня есть базовый класс, в котором есть чисто виртуальная функция, и с помощью этой функции я хочу переопределить ее в других производных классах (в некоторых из них, если это возможно, с другим количеством параметров).Итак, в подклассе MergeSort у меня есть метод MSort, которому потребуется другое количество параметров, поскольку он выполняется рекурсивно.
Итак, наличие этой функции на данный момент с этими параметры. Я получаю эту ошибку.
«MergeSort:» не может создать экземпляр абстрактного класса. НО, если я переопределяю метод Sort из базового класса, он работает нормально, но мне не нужен один параметр.
Я также пытался объявить другую виртуальную функцию с другим количеством параметров и определить это в классе MergeSort, и я получаю то же самое.
Я также хотел бы уточнить, что у меня есть другие подклассы для разных алгоритмов (пузырьковая сортировка, сортировка вставкой и т. д.), которые реализованы аналогично MergeSort (конструктор и функция сортировки), но функция сортировки имеет такое же количество параметров (только один, используемый для графического интерфейса), как и в базовом классе ниже.
Так и есть. возможно ли иметь переопределенный метод с другим количеством параметров? Или какое-то другое решение того, что я сказал выше?
// BASE CLASS
// Forward declaration
class Interface;
/**
* Base class from which the sorting algorithms classes will inherit (Polymorphic class)
* The base class will allow us to create a sequence with n elements
*/
class SortingAlgorithms
{
protected:
std::vector sequence; // vector which will contain a randomized sequence
std::vector sequenceCpy; // a copy of sequence used for interaction features
sf::RenderWindow& window; // initializes the window
int minimum, maximum; // the range in which the elements will be randomized
int elements; // the number of elements which will be initialized
public:
SortingAlgorithms();
/** SortingAlgorithms() - class constructor which initializes the sequence
* @param min - the minimum value for randomizing
* @param max - the maximum value for randomizing
* @param els - the number of elements to generate
* @param win - since the window will be initialized only once (singleton pattern);
* it will be needed to pass on this object to almost every function that has
graphics features
*/
SortingAlgorithms(int min, int max, int els, sf::RenderWindow& win);
// A pure virtual function for overriding and param init which is what I described about win param from SortingAlgorithms constructor
virtual void Sort(std::unique_ptr& init) = 0;
};
class MergeSort : public SortingAlgorithms
{
public:
MergeSort(int min, int max, int els, sf::RenderWindow& win);
void Merge(std::unique_ptr& init, int first, int mid, int last);
void MSort(std::unique_ptr& init, int first, int last);
};
Подробнее здесь: [url]https://stackoverflow.com/questions/63565855/pure-virtual-function-issue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия