【发布时间】:2024-05-01 05:35:02
【问题描述】:
我有一个带有数值的类。 我需要添加一个运算符重载,当强制转换为 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++。我们在这里只说
std::stringish。char *太 C 了。 -
我需要它来修改一个框架,我不能使用std::string。
-
顺便说一句,如果它在 std::string 的位置,问题将持续存在。
-
如果你不能改变返回类型,使用一个缓冲区成员,在那里复制格式化字符串并返回一个指向缓冲区的指针,或者,如果你是脏类型,使用全局静态缓冲区并做同样的事情。
-
隐式转换是危险的,所以我首先要重新考虑转换运算符的整个想法。它真的有必要吗,还是显式转换是前进的方向?
标签: c++ string operator-overloading return-value