首页 > 解决方案 > 如何在 C++ 中正确重载运算符 cast char*?

问题描述

我有一个带有数值的类。我需要添加一个运算符重载,当强制转换为 char*(或 wchar*)时,它会返回一个具有可读值的字符串。

我试过了

VAR::operator char*()
{
  STRING test;
  test.format("%d",value); //fills string with "readable" data
  return test.Get() //returns the char* content of the test;
}

但是调用 STRING 的析构函数会删除该值并返回随机数据。

任何的想法?

标签: c++stringoperator-overloadingreturn-value

解决方案


任何的想法?

  1. 使用字符串而不是 char 指针。

    VAR::运算符字符串();

  2. 如果不是 1. 则返回一个新的字符串副本。

char const *retVal = new char[test.size() + 1]; std::strncpy(retVal, test.Get(), test.size()); retVal[test.size()] = '\0'; return retVal;.

(以后别忘了delete[]。)

  1. 最后,你可以创建test你的类的成员并返回它的内容;那么它将在函数结束后继续存在。

推荐阅读