Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2018, 12:35   #51
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение

Обычно. В чем проблема? Вы не знали, что указателю на базовый класс можно присвоить адрес производного?
я знал, но я не могу понять как написать. Мне нужно возвращать std::unique_ptr<Component> а я если так напишу
Код:
return &test;
возвращу Test.
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:37   #52
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

И что будет с объектом test на стеке функции при ее завершении?
p51x вне форума Ответить с цитированием
Старый 08.06.2018, 12:37   #53
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Хоча, я не правильно вас прочитал
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:38   #54
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
И что будет с объектом test на стеке функции при ее завершении?
он удалится. и будет мусор
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:39   #55
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Создавайте сразу уник_указатель и вперед.
p51x вне форума Ответить с цитированием
Старый 08.06.2018, 12:40   #56
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Создавайте сразу уник_указатель и вперед.
создал
Код:
std::unique_ptr<Test> test = std::make_unique<Test>();
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:41   #57
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

теперь весь код, для проверки
Код:
std::unique_ptr<Component> Archiver::deserialise(const QJsonObject& jsonData)
{
    std::unique_ptr<Test> test = std::make_unique<Test>();
    if (jsonData["classType"] ==( ClassType::TEST))
    {
       test->setName(jsonData["name"].toString());
       for(auto& сhild : jsonData["children"].toArray())
        {
            std::unique_ptr<Component> childComponent = deserialise(сhild.toObject());
            test->addChild(childComponent);
        }

        return test;
    }
    return nullptr;
}
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:46   #58
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Ошибка:
Код:
test->addChild(childComponent);
так нельзя писать
хоча страно:
Код:
void addChild(std::unique_ptr<Component> component);
и передаю я тоже
Код:
 std::unique_ptr<Component>

Последний раз редактировалось dimaSlon; 08.06.2018 в 12:48.
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 12:58   #59
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию

Как такое может быть?:
Цитата:
error: C2280: 'std::unique_ptr<Component,std:ef ault_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std:efault_de lete<_Ty>> &)': attempting to reference a deleted function
dimaSlon вне форума Ответить с цитированием
Старый 08.06.2018, 13:04   #60
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так может она там абстрактная?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написал программу, которая должна выводить среднее арифметическое ряда чисел, вроде все работает, но выводит какое-то левое число lfybbk Общие вопросы C/C++ 6 30.12.2016 11:33
Может ли функция возвращать множество значений? Алексей_2012 Помощь студентам 22 27.08.2015 13:19
Может ли функция возвращать массив? TzX Общие вопросы Delphi 4 20.09.2010 19:27
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10