非const函数_fastcall TStrings :: GetCount()调用const对象

时间:2012-07-12 13:50:58

标签: c++ const c++builder

我有一个旧的c ++代码,需要编译并编译成c ++ builder 5。 但是现在,我需要将此代码更新/迁移到c ++ builder 2009.所以,我遇到了一些问题:

int __fastcall TAllConversor::ListToStr(
    const TStringList* pList,
    AnsiString& strValue,
    const long lngLimiteInferior,
    const long lngLimiteSuperior) const
{
  long lngIndice;
  AnsiString strAux;

  try
  {
    if (lngLimiteSuperior == 0)
      lngIndice = pList->Count;
    else
      lngIndice = lngLimiteSuperior + lngLimiteInferior;

    for (int i = lngLimiteInferior; i < lngIndice; i++)
    {
      strAux += pList->Strings[i] + ";";
    }

    strValue = strAux;
    return 1;
  }
  catch(...)
  {
    return 0;
  }
}

在行“lngIndice = pList-&gt; Count;”我得到这个错误:“E2522非const函数_fastcall TStrings :: GetCount()调用const对象”。

那么,我该如何解决(解决)它?

1 个答案:

答案 0 :(得分:3)

如果你提供了TStringList的确切定义会有所帮助,但我只是假设它是typename TString的模板化数组。

解决方法可能是抛弃const,如:

lngIndice = (const_cast<TStringList*>(pList))->Count;

当然它就是这样 - 一个解决方法,你可能想要在TString本身提供一个const-correct访问函数