C++ 函数认为指针参数是指针引用
C++ function thinks pointer argument is pointer reference
编译库时出现与以下函数相关的错误:
error: no matching function for call to ‘Factor::inplaceCancel(const
Factor*&)’
我不明白为什么 const Factor* rhsFPtr
被当作 const Factor*&
。
谁能帮我解决这个问题?
void InplaceCancelFF::inplaceProcess(FactorisedFactor* lhsPtr, const Factor* rhsFPtr){
lhsPtr->factorPtrs[0]->inplaceCancel(rhsFPtr);
...
}
//In the abstract Factor Class:
virtual void inplaceCancel(const Factor* rhsPtr,FactorOperator* procPtr) = 0;
//In the child class:
inline void inplaceCancel(const Factor* rhsPtr, FactorOperator* procPtr = 0);
基 class 中的声明没有第二个默认参数 (procPtr
)。所以这在子 class 声明中被忽略了。
您需要为函数提供 2 个参数才能工作(或默认为基本声明)
感谢大家的帮助。基 class 中有一些我没有看到的函数重载(我正在编辑别人的代码)。我更改了指针类型以匹配其他函数之一并解决了问题。
编译库时出现与以下函数相关的错误:
error: no matching function for call to ‘Factor::inplaceCancel(const Factor*&)’
我不明白为什么 const Factor* rhsFPtr
被当作 const Factor*&
。
谁能帮我解决这个问题?
void InplaceCancelFF::inplaceProcess(FactorisedFactor* lhsPtr, const Factor* rhsFPtr){
lhsPtr->factorPtrs[0]->inplaceCancel(rhsFPtr);
...
}
//In the abstract Factor Class:
virtual void inplaceCancel(const Factor* rhsPtr,FactorOperator* procPtr) = 0;
//In the child class:
inline void inplaceCancel(const Factor* rhsPtr, FactorOperator* procPtr = 0);
基 class 中的声明没有第二个默认参数 (procPtr
)。所以这在子 class 声明中被忽略了。
您需要为函数提供 2 个参数才能工作(或默认为基本声明)
感谢大家的帮助。基 class 中有一些我没有看到的函数重载(我正在编辑别人的代码)。我更改了指针类型以匹配其他函数之一并解决了问题。