Поэтому я изменяю некоторый код с 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);