我有一个我这样定义的测试:
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
}
我确信这是我对指针和参考的理解的问题。我在这里做错了什么想法?为什么数据值在返回测试时仍未定义?
答案 0 :(得分:2)
通过引用&
传递指针本身:
void ClassName::getData(ClassName1* &data2)
为清楚起见,我将变量重命名为data1
和data2
,以便您可以看到它们不同。只有在通过引用传递时它们实际上是相同的,否则存储在本地指针data2
中的地址在getData
函数退出后被销毁,并且最初存储在输入data1
中的NULL地址仍然存在不变。
调用语法保持不变:
FileHandle.getData(data1);