使用 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::descriptionchar*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。它应该可以工作