gpt4 book ai didi

c++在复制构造函数中调用函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:47 26 4
gpt4 key购买 nike

我现在有

public:
LargerSetPartD(unsigned maxValue);
LargerSetPartD(const LargerSetPartD &); //copy constructor
void printElements(); // prints members
void set_union(const LargerSetPartD &);
bool isMember(unsigned int);
private:
unsigned long Values;
unsigned maxElementValues;

在 set_union 中我正在努力做

LargerSetPartD *temparray = new LargerSetPartD(maxElementValue);
//this part of the code just saves an old array composed of Values to temparray.
if ( tempArray->isMember(i) || other.isMember(i))

但是 other.isMember(i) 不工作。我也试过 other->isMember(i) 但这不起作用。我无法触摸/更改公共(public)功能,因此我无法在 is 成员中添加 const。我不知道该怎么做。任何帮助,将不胜感激。我得到的错误信息是

passing ‘const LargerSetPartD’ as ‘this’ argument discards qualifiers [-fpermissive]

copy constructor:
LargerSetPartD::LargerSetPartD(const LargerSetPartD &other)
{

Values = other.Values;
maxElementValue = other.maxElementValue;
}

最佳答案

假设 otherset_unionconst LargerSetPartD & 参数,您正在尝试调用非 const const 对象上的方法,这是不允许的。

由于您无法更改公共(public)方法的签名,因此您可以创建 other 的临时非常量拷贝并调用该方法:

LargerSetPartD tmp_other(other);
if ( tempArray->isMember(i) || tmp_other.isMember(i))
...

关于c++在复制构造函数中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173507/

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