c++ - 如何在 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 的析构函数会删除该值并返回随机数据。
任何的想法?
解决方案
任何的想法?
使用字符串而不是 char 指针。
VAR::运算符字符串();
如果不是 1. 则返回一个新的字符串副本。
char const *retVal = new char[test.size() + 1];
std::strncpy(retVal, test.Get(), test.size());
retVal[test.size()] = '\0';
return retVal;
.
(以后别忘了delete[]
。)
- 最后,你可以创建
test
你的类的成员并返回它的内容;那么它将在函数结束后继续存在。
推荐阅读
- ruby-on-rails - Rails 5.1 路由约束不传递参数
- android - 如何将可扩展列表视图转换为以回收器列表视图为子视图的列表视图?
- typescript - 错误:“ObjectBuilder”类型上不存在属性“onChange”
- html - Google Apps 脚本;侧边栏关闭
- vuejs2 - Vuex状态在绑定时将[object Object]插入输入
- python - rtsp 方法设置失败:461 客户端错误
- html - 因此
和其他元素有自己的填充
- php - 获取最多 n 级的 XML 标记和属性
- kotlin - 我如何在 kotlin 中与超类建立一对一的关系
- javascript - 如何替换包含不固定字符的字符串中的某些字符