Инициализация переменной с помощью разыменованного указателя в списке инициализации - PullRequest
0 голосов
/ 28 мая 2018

Поэтому я изменяю некоторый код с C на C ++, поэтому в результате я должен добавить все деструкторы конструктора для всех структур / классов.

, поэтому рассмотрим следующую структуру макета

struct CAddition {
    int x;
    int *foo;
    int y;
    int c;
    int z[3];
    int result() { 
        return x + y; 
    }
    CAddition();
    ~CAddition();
};

Теперь где-то в функции инициализации переменная y была инициализирована значением, на которое foo указывал примерно так

int func_test(CAddition *temp)
{
    temp->y = *temp->foo;
    return temp->y;
}

У меня уже были сомнения, потому что указатель foo не указывал ни на что (илискажем, в мусорной памяти), но все же я как-то удалил функцию извлечения, я попытался инициализировать y в моем списке инициализации как

CAddition::CAddition()
    : x(0)
    , foo(nullptr) // can be simply foo() both are the same as far as i know
    , y(*foo)
    , z()
    ,c(result())
{
}

, и, очевидно, запрограммированный сбой, потому что foo является нулевым указателем, мойвопрос в том, есть ли какой-нибудь способ или способ обойти, где я могу инициализировать y с помощью разыменованного указателя foo, чтобы он не зависал

PS Я попытался вызвать func_test, и он также потерпел крах по той же причинепотому что foo это nullptr

CAddition test_fun;
add_res = func_test(&test_fun);
...