3

我有一个函数原型

test(something &)

我正在做

something *ss = new something();

我说

test(ss)

编译器抱怨说从表达式 something * 初始化类型 something& 的引用。

但不是 new 返回地址并且 ss 必须指向该地址!所以如果测试期待一个参考,它不是 ss 代表一个参考吗?

4

3 回答 3

3

您的函数需要一个普通something对象。您不需要在这里使用指针:

something ss;

test(ss);

当您的函数签名看起来像f(T&)时,这意味着它接受对T对象的引用。当签名为f(T*)时,表示它接受一个指向对象T的指针。

于 2013-02-12T00:31:24.617 回答
2

您的函数需要一个对 的引用something,并且您正在向它传递一个指向的指针something。您需要取消引用指针:

test(*ss);

这样,该函数将引用指向的对象ss。如果你有一个something对象,你可以将它直接传递给:

something sss;
test(sss); // test takes a reference to the sss object.
于 2013-02-12T00:29:41.630 回答
0

您对变量的引用和地址感到困惑。

如果你的函数原型是:

test(something &)

你可以调用它something object

something ss;
test(ss);

你可以调用它something pointer

 something *ss = new something();
 test(*ss);

如果您的功能是:

test(something *)

您可以致电:

something *ss = new something();
test(ss);
于 2013-02-12T00:40:54.497 回答