gpt4 book ai didi

c++ - "No known conversion for implicit ‘this’ 参数“错误

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:41 25 4
gpt4 key购买 nike

我有一个类和两个方法:

public:
bool Search ( const string & oName, const string & oAddr,
string & cName, string & cAddr ) const
{
Company ctmp;
ctmp.own = oName + "|" + oAddr;
int place = searchDupl(ctmp,currentsize,0);

if (place < 0)
return false;
else
{
size_t pos = c[place].cmpn.find(' ');
cName = c[place].cmpn.substr(0,pos);
cAddr = c[place].cmpn.substr(pos+1);
return true;
}
}

私下里,我有 searchDupl:

int searchDupl(Company cmp,int imax,int imin)
{
if (imax < imin)
return -1;
else
{
int mid = imin + ((imax - imin)/2);

if (c[mid].own > cmp.own)
{
return searchDupl(cmp,mid-1,imin);
}
else if (c[mid].own < cmp.own)
{
return searchDupl(cmp,imax,mid+1);
}
else
{
return mid;
}
}
}

c 是一个动态数组,它在私有(private)部分定义并在构造函数中初始化。 currentsize 是 int 类型的变量(也是私有(private)的,在构造函数中初始化),它定义了 c 中元素的数量。

当我尝试使用 g++ 编译它时,出现以下错误:

main.cpp: In member function ‘bool CCompanyIndex::Search(const string&, const string&, std::string&, std::string&) const’:
main.cpp:69:54: error: no matching function for call to ‘CCompanyIndex::searchDupl(Company&, const int&, int) const’
main.cpp:69:54: note: candidate is:
main.cpp:106:13: note: int CCompanyIndex::searchDupl(Company, int, int) <near match>
main.cpp:106:13: note: no known conversion for implicit ‘this’ parameter from ‘const CCompanyIndex* const’ to ‘CCompanyIndex*’

我不知道哪里出了问题。

最佳答案

您的第一个方法声明为 const -方法

bool Search ( const string & oName,
const string & oAddr,
string & cName,
string & cAddr ) const
// ^^^^^ here
{
// ...
}

表示 this 的类型是const CCompanyIndex* const .当您尝试从该方法中调用第二个方法时,该调用等效于 this->searchDupl(ctmp,currentsize,0) .这就是为什么 this 的类型在你的情况下很重要。您需要 CCompanyIndex 的可变实例,即,您需要 this类型为 CCompanyIndex* const因为第二种方法声明为

int searchDupl(Company cmp,int imax,int imin)
// ^^^ no const here
{
// ...
}

因此您的代码无法编译。要修复它,您应该将第二种方法声明为 const以及该方法显然没有改变类的状态:

int searchDupl(Company cmp,int imax,int imin) const
{
// ...
}

关于c++ - "No known conversion for implicit ‘this’ 参数“错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com