Как удалить объект, который был разыменован?

У меня есть следующий код

MyObject * func1() {
    MyObject * obj = new MyObject();
    // lots of stuff here
    return obj;
}

MyObject func2() {
    MyObject * obj = func1();
    // even more stuff here
    return *obj;
}

void main() {
    MyObject obj = func2()
}

Как я получил от здесь , этот код протекает. Решит ли это:

MyObject * func1() {
    MyObject * obj = new MyObject();
    // lots of stuff here
    return obj;
}

MyObject func2() {
    MyObject * obj = func1();
    // even more stuff here
    MyObject obj_r(*obj);
    delete obj;
    return obj_r;
}

void main() {
    MyObject obj = func2()
}

проблему? Или есть какие-то другие хорошие решения?

в b4: нет, я не могу ссылаться на него с самого начала, так как func1 () в некоторых случаях возвращает NULL.

upd: добавлены некоторые комментарии, чтобы люди не делали этого. Я думаю, что я по-королевски глуп

0
задан Community 23 May 2017 в 12:04
поделиться