gpt4 book ai didi

c++ - 将一个对象分配给另一个对象时没有可行的重载 '='?

转载 作者:行者123 更新时间:2023-11-28 00:10:51 24 4
gpt4 key购买 nike

我曾尝试寻找解决方案,但这些问题的答案非常具体。这是我的。

header 代码。

class InventoryItem {

public:

InventoryItem(char *desc = 0, double c = 0, int u = 0);
~InventoryItem();

char *getDescription() const;
double getCost() const;
int getUnits() const;

void operator= (const InventoryItem &right);

int setUnits;

private:
char *description;
double cost;
int units;
};

与头文件关联的 .cpp 文件。

InventoryItem::InventoryItem(char *desc, double c, int u) {
description = desc;
cost = c;
units = u;
}

InventoryItem::~InventoryItem() {}

void InventoryItem::operator= (const InventoryItem &right) {
units = right.getUnits();
cost = right.getCost();
description = right.getDescription();
}

CashRegister 类。

class CashRegister {

public:
void getItemToPurchase(InventoryItem) const;

private:
InventoryItem item;
}

错误发生在这段代码中,它是 CashRegister 函数的 .cpp 文件。

void CashRegister::getItemToPurchase(InventoryItem item1) const {

item = item1;
}

即使 item 和 item1 都是同一类的对象,它也会说“没有可行的运算符”=。

我已经将我的代码与书中的代码进行了比较,但它仍然不起作用。

最佳答案

问题出在 CashRegister 中的 const 成员函数。在 CashRegister::getItemOnPurchase() 中,item 是一个 const 成员。因此

item = item1;

不是一个可行的函数。

我可以想出几种方法来解决这个问题。

  1. 返回对象

    InventoryItem CashRegister::getItemToPurchase() const {
    return item;
    }
  2. 将对象作为输出参数返回。

    void CashRegister::getItemToPurchase(InventoryItem& item1) const {
    item1 = item;
    }

此外,在 operator= 函数中返回对对象的引用更为惯用。

InventoryItem& operator= (const InventoryItem &right);

关于c++ - 将一个对象分配给另一个对象时没有可行的重载 '='?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205902/

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