170 похожих чатов

//Полиморфный базовый класс class Base {...} class Child1 : Base {

//Генератор нового объекта класса Child1
static Child1 getRndInst() { ... }
}

class Child2 : Base {
//Генератор нового объекта класса Child2
static Child2 getRndInst() { ... }
}

//Агрегирующий класс
class Item {
Base* item;
//Генерация случайных объектов Child1 или Child2 через указатель на базовый класс
static Base* getRndItem() {
Base* (*rndItem[2])() = {
//Как описать приведение типа для возвращаемого значения указателя функции?
Child1::getRndInst,
Child2::getRndInst
}
return rndItem[rand() % 2]();
}
}

4 ответов

11 просмотров

Лучше в лямбду сунь

возвращай указатели, а не конкретные объекты

Методы-генераторы же статические, какой указатель на базовый класс?

Возвращаемое значение тут не описать, потому как разные типы. Надо для этого возвращать объекты класса по ссылке или по указателю. При этом создавать их придётся динамически (через new). Тогда у двух разных типов возврата будет общий coercable тип.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта