gpt4 book ai didi

c++ - 如何在 VS2012 中将自定义类型转换为字符串?

转载 作者:行者123 更新时间:2023-11-30 02:00:26 27 4
gpt4 key购买 nike

我想将一个自定义类转换为一个在 VS2005 中编译得很好的字符串。但在 VS2012 中,我收到编译器错误 error C2440: 'type cast' : cannot convert from 'A' to 'std::string'。我必须改变什么?这是我的例子:

    #include <string>

using namespace std;

class A
{
public:
A& operator=(const char* c);
operator string ();
operator const char* ();

private:
string value;
};

A::operator string () { return string((const char*)(*this)); }
A& A::operator = (const char* aValue) { value = aValue; return *this; }
A::operator const char *() { const char* wort = "Hello"; return wort; }

int main()
{
A a;
string s = (string)a; // C2440
}

最佳答案

问题是从 Astring 有两种可能的显式转换——通过转换运算符到 string;或者通过转换运算符转换为 const char *,然后通过转换构造函数转换为 string

简单地使转换隐式将解决歧义;第二个转换需要两个用户定义的转换,因此不能选择隐式转换:

string s = a;

但是,该类仍然有点不稳定,因为有时您可能需要显式转换。我会考虑至少删除一个隐式转换运算符——也许用显式运算符替换它们(如果你的编译器支持这样的东西),或者用命名函数(比如 string 本身用 c_str( )).

关于c++ - 如何在 VS2012 中将自定义类型转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com