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