将类型“type”的引用绑定到类型“const type”的值会删除“const”限定符

问题描述 投票:0回答:1

这个问题看起来像是已知问题。但我的类型没有任何限制。 我缺少什么? 我有以下代码:

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)
c++ constants
1个回答
0
投票

不清楚变量

Iterator2AGUAssignAnalisisVMP7
在哪里声明。我怀疑是数据成员
Iterator2AGUAssignAnalisis

class OtherClass
{
private:
Iterator2AGUAssignmentAnalisis Iterator2AGUAssignAnalisis;
//...

但无论如何功能

generateAndRegisterDummyLoad

DummyLoadIterator *
  generateAndRegisterDummyLoad(AGUPlanForBlock &PlanForBlock,
                               DummyLoadIteratorKind Kind) const;

是常量成员函数。所以参数

Iterator2AGUAssignAnalisisVMP7
是一个常数。因此常量变量不能与非常量引用绑定。

© www.soinside.com 2019 - 2024. All rights reserved.