Что делать если make unique не работает

make_unique не компилируется для создания одноэлементного экземпляра

Я использую C ++ 14 и делаю более или менее стандартный синглтон. Я использую последнюю версию Visual Studio 2017. Этот код работает:

Однако, когда я меняю создание экземпляра синглтона на это:

Я получаю сообщение об ошибке компиляции, что пытаюсь получить доступ к закрытому члену:

Мне это кажется ошибкой, поскольку две формы должны быть идентичны по функциям? Мысли?

2 ответа

Цель std::unique_ptr<> — управлять временем жизни указанного объекта. Вы можете передать std::unique_ptr<> , но это также передаст право собственности на указанный объект. Эта концепция не очень хорошо сочетается с концепцией синглтона. Есть только одно место, где когда-либо разрешено создавать (или удалять) синглтон. Для этого вам действительно не нужен std::unique_ptr<> . Как уже было сказано в комментариях, для этого есть более простые способы. Я бы предпочел предложение @ Praetorian:

Причина, по которой вы не можете использовать std::make_unique<>() для создания экземпляра вашего класса, заключается в том, что конструктор является частным. Чтобы получить к нему доступ, вам необходимо, чтобы функция доступа была friend . Взгляните на Как сделать std :: make_unique другом моего класса для этого. Другое решение — предоставить общедоступный конструктор, требующий в качестве аргумента частный тип, как описано в этом решении.

Это создает A внутри функции make_unique . Но оператор, которому вы хотите позвонить, является частным.

ctor_permission_t действует как жетон, дающий его владельцу право построить A . Мы передаем это в make_unique .

Параметр explicit int в ctor_permission_t делает невозможным его создание без имени типа, и только в экземплярах и друзьях A его можно назвать, потому что он является частным. Это затрудняет обход этого токена разрешения.

Источник

Почему возникает ошибка при использовании make_unique() ?

Пишу следующий код:

В то же время, код с созданием умного указателя и последующей его передачи не вызывает ошибки:

Не могу понять, почему для make_unique() отсутсвует определение. Как сделать так, чтобы заполнение умного указателя делалось через make_unique()?

Ахтыж, я то думал что в C++11 make_unique уже было завезено.

алгоритм такой: вводишь в гугл интересующую плюсовую штуковину (c++ std::make unique), открываешь в результатах cppreference.com (обычно первый в списке) и вверху справа видишь https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique зелёным написано «since c++14)

там же выше видишь, в каком заголовночном файле определена сия сущность

Читайте также:  Почему не работает шерегеш

очень удобно, если `man make_unique` недостаточно понятен

Забей, он необучаем.

Операционная система: CentOS 7.

Поставил пакет c С++ документацией:

На зато есть `man std::unique_ptr`.

алгоритм такой: вводишь в гугл интересующую плюсовую штуковину (c++ std::make unique), открываешь в результатах cppreference.com (обычно первый в списке) и вверху справа видишь https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique зелёным написано «since c++14)

Я туда всегда в первую очередь лезу. Просто когда устаешь и начинаешь тупить, не замечаешь очевидного.

Потому что std::make_unique ожидает либо отсутствие аргумента, либо значение unsigned char. Что возвращает SOIL_load_image?

Упс, да. Только с четырнадцатого стандарта оно доступна.

Но это не отменяет того, что тут явная дурь написана:

Источник

Что делать если make unique не работает

Forum rules
WE NEED DETAILS!

We appreciate it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them.

Читайте также:  Намусорил убери за собой даже если мусорка не работает

[20.1] Make Unique As Sample not working

Hey guys, love the new update — great new features.

A bug that is happening for me is that every time I cut part of an audio clip, and then proceed to ‘Make Unique As Sample’, the clip disappears.

Here’s a series of images (OBS is not working):

An example audio clip

Any fixes for this?

FL Studio 20.1 [build 785]

Also on a side note, loop recording no longer automatically mutes the recorded clips. Was this an intentional alteration?

Источник

Std::make_unique не работает в gcc 4.9, Qt 5.6

В pro файл
CONFIG += c++14
и
QMAKE_CXXFLAGS += -std=gnu++1y
Вписал.

в unique_ptr.h реализация есть.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

gcc -std key
============================================================== -std= какие параметры здесь можно.

Отсутствует std::unique_ptr gcc 4.8.1
всем привет , я в С++ начинающий и возникла проблема не работает std::unique_ptr версия.

Почему gcc ругается на std::cout?
Проблема такая: работаю на Mac, установил Xcode, запускаю gcc в командной строке. Имеется.

Компилятор (gcc 4.6) не распознает параметер-std=gnu11
Всем привет, Компилятор (gcc 4.6) не распознает параметер -std=gnu11, Кто знает в чем проблема?

опция -std=gnu++1y означает c++11. Т.е. нужна опция -std=gnu++14

Добавлено через 1 минуту
А не. 1y означает c++14. Тогда хз. Но по ссылке была описана твоя проблема, насколько я понял

Добавлено через 1 минуту

Перепутал с -std=gnu++0x

я пробовал по всякому уже.
и -std=с++1y
и писал даже:
QMAKE_CXXFLAGS += -std=gnu++1y
QMAKE_CXXFLAGS -= -std=gnu++0x

А вот если кланг врубаю в Qt — он не ругается на make_unique, но на некоторых функциях не может определить auto, мол «не знает» что там должно получиться.

Почему людей так тянет на идиотские опции типа -std=c++0x или -std=c++1y. В чём проблема использовать понятную и не вызывающую сомнений опцию -std=c++11 или -std=c++14

Evg, возможно, что людям просто нравится «идти против системы» :jokingly:

Вот уже хоть какая-то конкретика пошла. Говорит о том, что в твоём компиляторе попросту нет полноценной поддержки C++14. В компиляторе gcc-4.9.2 такая поддержка есть и на такую опцию он не ругается. У тебя какая версия gcc?

Чисто к сведению. Опции c++0x и c++1y по смыслу появились в те времена, когда официально стандарты (c++11 и c++14 соответственно) ещё не были приняты. Потому и сделали уродские опции, чтобы подчеркнуть этот факт. Ну а в будущих версиях после принятия стандартов эти опции сделали синонимами. Тот факт, что у тебя есть опция -std=c++1y, но нету -std=c++14, скорее всего говорит о том, что компилятор в той стадии, когда не было до конца известно, что попадёт в стандарт, а что нет. Возможно, потому и не хватает чего-то в стандартной библиотеке

Читайте также:  Как настроить экран вертикально

Добавлено через 7 минут
Хотя, судя по этому https://gcc.gnu.org/projects/cxx1y.html полноценная поддержка есть только начиная с gcc-5

Но если ты потрудишься вырезать короткий пример из одного файла, то люди смогут проверить его на разных версиях gcc. Т.е. понять, проблема реально в неполной поддержке gcc, или в чём-то другом

Источник

Что делать если make unique не работает

Forum rules
WE NEED DETAILS!

We appreciate it’s frustrating when things don’t work. However, please help us to help you by following these suggestions:

  1. Update — Before trying anything else. Download and install the latest version of FL Studio from here. Your bug may be fixed already!
  2. Update plugins — If you are using 3rd party plugins. Look at crash logs for their names. Install the latest version for any you spot. See also Plugins Behaving Badly
  3. Simple clear explanation — Explain what you are doing, or trying to do, and exactly what is happening.
  4. Specific information — a) FL Studio version & build number, b) what you are doing and what happens exactly, c) step-by-step instructions how reproduce the problem.
  5. Screenshots — Another great way to demonstrate issues. Get a free screenshot app here. Include images using the ‘Attachments’ tab, at the bottom of the post edit window.
  6. A video — The best way of demonstrating many issues. Windows 10 includes an integrated screen recorder, see here OR get a free free recorder here. Include mp4 videos to your post from the ‘Attachments’ tab, at the bottom of the post edit window.
  7. Use English — Google Translate your post. Short simple sentences in your original language translate best. We are happy to work this way, no need to worry.

NOTE: Technical Support is ONLY available Monday — Friday (9 am to 5 pm Central European Time), thank you.

ALL posts made in this forum are ‘ Private‘ so that only you and staff can see them. This allows sharing of personal data, projects and other information. Posts are generally made public after they are marked ‘Solved’ AND there was no personal data contained in them.

Источник

Оцените статью