编译器错误说无效的类型的引用的初始化&来自某种类型的表达*

时间:2013-02-12 00:29:06

标签: c++ compiler-errors

我有一个像

这样的函数原型
test(something &)

我正在做

something *ss = new something();

我说

test(ss)

编译器抱怨说初始化某种类型的引用&来自表达的东西*。

但不是新的返回地址,ss必须指向该地址!所以,如果测试期望参考不是ss代表参考?

3 个答案:

答案 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);