У меня есть тест, который я определил так:возвращается нулевой указатель
ClassName FileHandle;
ClassName1* data; //I want function to define this later
FileHandle.getData(data); //this is null after the call but isn't in function it calls
//why isn't the pointer defined from the method called? How fix?
Функция вызывается выглядит следующим образом:
void ClassName::getData(ClassName1* data)
{
char * buf = "lots of data";
data = new ClassName1(buf, sizeof(buf)); //it's in there
}
Я уверен, что это проблема с мое понимание указателей и ссылок. Любые идеи, что я делаю неправильно здесь? Почему значение, которое все еще определено, когда оно возвращается к моему тесту?
Я видел примеры указателей и вызовов функций here, но у меня возникли проблемы с поиском такого примера. This похоже, что это тоже похоже, но я все еще смущен.
ли вы понять, почему 'аннулируются F (INT I) {я = 3; } void g() {int j; е (к); } 'не устанавливает' j' в '3'? Это действительно то же самое, и если вы это понимаете, это поможет получить более качественные ответы, если вы сможете объяснить разницу, которую вы видите, заставляя вас думать, что ваш пример изменяет «данные». – hvd
Вы пытаетесь изменить адрес указателя, но передаете указатель по значению: P – DGomez
@DGomez - Это не позволит мне вызвать getData (& data). Я попытался изменить функцию на getData (ClassName1 & data) вместе с ней, но это не позволит мне создать экземпляр нового ClassName1 в getData. – Michele