使用 char c++ 重载运算符
Overloading Operators with char c++
我正在为 class 做关于重载运算符的作业。我遇到的问题是一个字符。
RetailItem &RetailItem::operator=(const RetailItem &objRetail) {
this->description = objRetail.getDescription();
this->unitsOnHand = objRetail.getUnitsOnHand();
this->price = objRetail.getPrice();
return *this;
}
我在 Visual Studio 上收到一条消息:
a value of type const char *
cannot be assigned to an entity of type char *
.
我做了一些研究,但没有找到任何东西。如果有人可以提供帮助,请提前致谢。
编辑:
我将添加getDescription
功能以提供更多信息。描述也是 *char
.
const char *RetailItem::getDescription() const{
return description;
}
可能 RetailItem::description
是 char*
和 RetailItem::getDescription
将此 char*
转换为 const char*
和 returns那个。您 可以 隐式添加 const
限定符,但您 不能 在赋值中以相同的方式删除它们:
this->description = objRetail.getDescription();
而你可能不应该。这将使两个 RetailItem
引用同一个资源而没有正确管理其生命周期,也不会释放之前持有的内存(如果它确实是指向动态分配数组的指针)。
归结为: 你应该更喜欢使用 std::string
而不是数组。
原因可能是您在 class 中使用的 "member variables" 数据类型与函数的 return 值不匹配。
const char *RetailItem::getDescription() const{
return description;
}
删除 function 之前的 const,仅保留 char *RetailItem::getDescription() const。它应该可以工作
我正在为 class 做关于重载运算符的作业。我遇到的问题是一个字符。
RetailItem &RetailItem::operator=(const RetailItem &objRetail) {
this->description = objRetail.getDescription();
this->unitsOnHand = objRetail.getUnitsOnHand();
this->price = objRetail.getPrice();
return *this;
}
我在 Visual Studio 上收到一条消息:
a value of type
const char *
cannot be assigned to an entity of typechar *
.
我做了一些研究,但没有找到任何东西。如果有人可以提供帮助,请提前致谢。
编辑:
我将添加getDescription
功能以提供更多信息。描述也是 *char
.
const char *RetailItem::getDescription() const{
return description;
}
可能 RetailItem::description
是 char*
和 RetailItem::getDescription
将此 char*
转换为 const char*
和 returns那个。您 可以 隐式添加 const
限定符,但您 不能 在赋值中以相同的方式删除它们:
this->description = objRetail.getDescription();
而你可能不应该。这将使两个 RetailItem
引用同一个资源而没有正确管理其生命周期,也不会释放之前持有的内存(如果它确实是指向动态分配数组的指针)。
归结为: 你应该更喜欢使用 std::string
而不是数组。
原因可能是您在 class 中使用的 "member variables" 数据类型与函数的 return 值不匹配。
const char *RetailItem::getDescription() const{
return description;
}
删除 function 之前的 const,仅保留 char *RetailItem::getDescription() const。它应该可以工作