这个问题看起来像是已知问题。但我的类型没有任何限制。 我缺少什么? 我有以下代码:
class PlanForBlock
{
public:
void registerExtraIterator(DummyLoadIterator *ExtraIterator, const SIImpl *SInfo, Iterator2AGUAssignmentAnalisisVMP7& Iterator2AGUAnalisis) {
assert(ExtraIterator && "Not an EyeQVMPDummyLoadIterator!");
ExtraIterators.push_back(ExtraIterator);
if (SInfo->hasEyeQVMP7()) {
bool IsGenXYIt = ExtraIterator->containsDummyIterKind(GenXY);
Iterator2AGUAnalisisVMP7.addIterator(ExtraIterator, SBNonMasked,
IsGenXYIt);
}
}
};
class OtherClass
{
private:
Iterator2AGUAssignmentAnalisis Iterator2AGUAssignAnalisis;
public:
DummyLoadIterator *
generateAndRegisterDummyLoad(AGUPlanForBlock &PlanForBlock,
DummyLoadIteratorKind Kind) const;
}
DummyLoadIterator *OtherClass::generateAndRegisterDummyLoad(
PlanForBlock &PForBlock, DummyLoadIteratorKind Kind) const {
auto *Iter = initDummyLoad(PlanForBlock.getBlock(), {}, Kind);
PBlock.registerExtraIterator(Iter, SInfo, Iterator2AGUAssignAnalisisVMP7);
return Iter;
}
错误
error: binding reference of type 'Iterator2AGUAssignmentAnalisis' to value of type 'const Iterator2AGUAssignmentAnalisisVMP7' drops 'const' qualifier
PForBlock.registerExtraIterator(Iter, SInfo, Iterator2AGUAssignAnalisis);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File.h:498:135: note: passing argument to parameter 'Iterator2AGUAnalisisVMP7' here
void registerExtraIterator(DummyLoadIterator *ExtraIterator, const SIImpl *SInfo, Iterator2AGUAssignmentAnalisis& Iterator2AGUAnalisis)
不清楚变量
Iterator2AGUAssignAnalisisVMP7
在哪里声明。我怀疑是数据成员Iterator2AGUAssignAnalisis
。
class OtherClass
{
private:
Iterator2AGUAssignmentAnalisis Iterator2AGUAssignAnalisis;
//...
但无论如何功能
generateAndRegisterDummyLoad
DummyLoadIterator *
generateAndRegisterDummyLoad(AGUPlanForBlock &PlanForBlock,
DummyLoadIteratorKind Kind) const;
是常量成员函数。所以参数
Iterator2AGUAssignAnalisisVMP7
是一个常数。因此常量变量不能与非常量引用绑定。