Как передать массив в конструктор c
Перейти к содержимому

Как передать массив в конструктор c

Как передать массив в конструктор?

Добрый вечер, это не то, о чем вы подумали! О new[] я знаю =)
Я делаю свою простую реализацию умных указателей для с++98. Но не могу сделать сделать указатель на массив.

Когда добавляю конструктор smart_ptr(int[] t) <>;
подчёркивает t и пишет что не хватает ‘)’ . Да, все кавычки и скобки до и после этого конструктора стоят нормально.
Как это исправить? И разве массив это не указатель(ну не сам массив, ну вы поняли =))?

  • Вопрос задан 24 нояб. 2021
  • 144 просмотра

Простой 3 комментария

  • Facebook
  • Вконтакте
  • Twitter

Sergio Поменял, но не дает все равно сохранить указатель на массив. Конструктор вот такой

что-то не понимаю, почему мне дают сохранить указатель на первый элемент массива.

У тебя _ptr не правильно обьявлён, скинь как ты его обьявляешь.
Лучше использовать указатели так int *t, а не так int t[]. И вот это _ptr = &(t[0]); аналогично этому _ptr = t. Судя по коду и твоей задаче тебе нужно сохранить указатель на зарезервированную облать и по итогу у тебя должно получиться нечто такое:

И так как это у тебя умный указатель тебе желательно делать так int *_ptr=nullptr и в конструкторе проверять этот момент и вести подсчёт указателей на эту область памяти чтобы при удалении и создании небыло утечки памяти, так же ещё есть конструкторы копирования, перемещения и их тоже надо переопределять, но так как у тебя простой умный указатель лучше определи их как = delete, чтобы потом не появлялись вопросы от куда взялась лишняя ссылка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *