g++ 编译器抱怨:
error: no matching function for call to ‘AddressSpace::resolve(ClassOne&, ClassTwo*&, ClassThree&) const’
note: candidates are: bool AddressSpace::resolve(ClassOne&, ClassTwo*, ClassThreer) <near match>
导致此错误的代码是
void Class::handler(ClassOne& objOne, ClassTwo& objTwo,
ClassThreer objThree) {
obj.getAddressSpaceObj().resolve(objOne, objTwo.pointer, objThree);
}
我深入研究了代码,发现这个错误是由getOtherObj()
. 我让它在类定义中返回对 AddressSpace 对象的 const 引用,请参阅
const AddressSpace &getAddressSpaceObj(){
return addressSpace;
}
在我更改此定义以返回正常引用后,
AddressSpace &getAddressSpaceObj(){
return addressSpace;
}
编译器不再抱怨它了。我想知道为什么这个错误被声明为参数不匹配错误?为什么编译器不复制内容作为函数调用的参数,而是将它们作为引用传递?