我有一个像
这样的函数原型test(something &)
我正在做
something *ss = new something();
我说
test(ss)
编译器抱怨说初始化某种类型的引用&来自表达的东西*。
但不是新的返回地址,ss必须指向该地址!所以,如果测试期望参考不是ss代表参考?
答案 0 :(得分:3)
您的函数需要一个普通的something
对象。你不需要在这里使用指针:
something ss;
test(ss);
当您的函数签名看起来像f(T&)
时,表示它接受对T
对象的引用。如果签名为f(T*)
,则表示它接受指针到T
对象。
答案 1 :(得分:2)
您的函数需要引用something
,并且您将指针传递给something
。你需要取消引用指针:
test(*ss);
这样,该函数会引用ss
指向的对象。如果您有一个something
对象,则可以将其直接传递给:
something sss;
test(sss); // test takes a reference to the sss object.
答案 2 :(得分:0)
您对reference和变量地址感到困惑。
如果您的函数原型是:
test(something &)
您可以使用something object
:
something ss;
test(ss);
您可以使用something pointer
:
something *ss = new something();
test(*ss);
如果您的功能是:
test(something *)
你可以打电话:
something *ss = new something();
test(ss);