Итак, у меня есть универсальный оператор.В этом конкретном случае его общий шаблон T
должен быть указателем на абстрактный базовый класс.Дело в том, что когда я создаю T *t
и пытаюсь вернуть *t
, я получаю сообщение об ошибке, говорящее о том, что T
невозможно создать, потому что это абстрактный класс.Даже если *t
всегда будет объектом производных классов, которые не являются абстрактными.Он не принимает это, потому что T в конце концов абстрактный тип.По сути, я хочу получить ссылку на *t
, возвращаемую из operator
в main()
, а затем присвоить ей объекты производных классов в main()
.
Я понимаю, чтоЕсть вопросы по нарезке и полиморфизму.Но я пытаюсь понять, как я могу достичь этого по-разному.Это совершенно другой вопрос, который касается следующего конкретного кода.
Код выглядит примерно так:
Template <class T>
class myArr{
T & operator [] (int index){
T*t;
Arr[0] = *t;
Return arr[0[;
}}
Main(){
Base * b=new derived;
myArr<Base>[17]=*b;
// Point is, I can make it of type pointers and maybe it can
//work but I prefer assigning *b to myArr because I want
to //assign objects themselves
}
У меня вопрос, как я могу вернуть сам объект из * 1017?*?Я хочу вернуть то, что я могу назначить производный объект.Я пытаюсь сделать это с указателем типа абстрактной базы, чтобы достичь полиморфизма, чтобы он мог содержать любой объект производных классов.