我不明白传递对象实例与传递取消引用对象之间的区别。我有
class A
{
public:
A() {}
void m() {}
};
void method(A& a)
{
a.m();
}
int main(int argc,char** argv)
{
method(A());
return 0;
}
上面的调用不适用于编译器错误:
In function 'int main(int, char**)':
error:no matching function for call to 'method(A)'
note: candidates are:
note: void method(A&)
note: no known conversion for argument 1 from 'A' to 'A&'
note: void method(B&)
no known conversion for argument 1 from 'A' to 'B&'
但如果我写
method(*(new A()));
确实如此。
如果我无法更改要调用的方法,谁能告诉我为什么以及如何解决问题?