SomeOtherFunction
передается указатель по значению, поэтому присваивание изменяет только локальную копию переданного адреса.
Чтобы сделать это, передайте указатель по ссылке:
void Main()
{
int* intPointer = NULL;
SomeFunction(intPointer);
//intPointer is still null?
}
void SomeFunction(int*& outInt)
{
SomeOtherFunction(outInt);
}
void SomeOtherFunction(int*& outInt)
{
outInt = new int(5);
}
Сказав это, что-то не так с использованием возвращаемого значения?
void Main()
{
int* intPointer = SomeFunction(intPointer);
//intPointer is still null?
}
int* SomeFunction()
{
return SomeOtherFunction();
}
int* SomeOtherFunction()
{
return new int(5);
}
[Обновить следующий комментарий. ]
Что ж, если у вас есть возвращаемое значение, указывающее статус, предположительно указывающее, было ли прочитано целое число или нет, то то, что вы действительно хотите (используя bool
в качестве заполнителя для вашего конкретного статуса):
void Main()
{
int intPointer = 0;
if (SomeFunction(intPointer) == true)
{
// read something
}
else
{
// failed to read.
}
}
bool SomeFunction(int& outInt)
{
return SomeOtherFunction(outInt);
}
bool SomeOtherFunction(int& outInt)
{
outInt = 5;
return true;
}