将 object 分配给另一个 object 时没有可行的重载“=”?
No viable overloaded '=' when assigning an object to another object?
我曾尝试寻找解决方案,但这些问题的答案非常具体。这是我的。
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;
};
与 header 文件关联的 .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();
}
收银机class。
class CashRegister {
public:
void getItemToPurchase(InventoryItem) const;
private:
InventoryItem item;
}
错误发生在这段代码中,它是 CashRegister 函数的 .cpp 文件。
void CashRegister::getItemToPurchase(InventoryItem item1) const {
item = item1;
}
它说 "No viable operator"=" 即使 item 和 item1 都是 objects 同一个 class。
我已经将我的代码与书中的代码进行了比较,但它仍然不起作用。
问题出在 CashRegister
中的 const
成员函数。在 CashRegister::getItemOnPurchase()
中,item
是 const
成员。因此
item = item1;
不是一个可行的函数。
我可以想出几种方法来解决这个问题。
Return对象
InventoryItem CashRegister::getItemToPurchase() const {
return item;
}
Return 对象作为输出参数。
void CashRegister::getItemToPurchase(InventoryItem& item1) const {
item1 = item;
}
此外,return 对 operator=
函数中的对象的引用更为惯用。
InventoryItem& operator= (const InventoryItem &right);
我曾尝试寻找解决方案,但这些问题的答案非常具体。这是我的。
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;
};
与 header 文件关联的 .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();
}
收银机class。
class CashRegister {
public:
void getItemToPurchase(InventoryItem) const;
private:
InventoryItem item;
}
错误发生在这段代码中,它是 CashRegister 函数的 .cpp 文件。
void CashRegister::getItemToPurchase(InventoryItem item1) const {
item = item1;
}
它说 "No viable operator"=" 即使 item 和 item1 都是 objects 同一个 class。
我已经将我的代码与书中的代码进行了比较,但它仍然不起作用。
问题出在 CashRegister
中的 const
成员函数。在 CashRegister::getItemOnPurchase()
中,item
是 const
成员。因此
item = item1;
不是一个可行的函数。
我可以想出几种方法来解决这个问题。
Return对象
InventoryItem CashRegister::getItemToPurchase() const { return item; }
Return 对象作为输出参数。
void CashRegister::getItemToPurchase(InventoryItem& item1) const { item1 = item; }
此外,return 对 operator=
函数中的对象的引用更为惯用。
InventoryItem& operator= (const InventoryItem &right);