gpt4 book ai didi

C++类转换可能吗?

转载 作者:太空狗 更新时间:2023-10-29 20:00:27 25 4
gpt4 key购买 nike

我有以下代码:

class B {
public:
B(const std::string& str):m_str(str) { }
B(const B& b):m_str(b.m_str) { }
B& operator=(const B& b) { m_str = b.m_str; return *this; }
private:
std::string m_str;
};

main()
{
std::string a = "abc";
B b(a);
}

B类属于客户。我无法更改它,我什至可能不知道它的具体名称(“B”只是一个例子);我所知道的是有一个客户端类接受 std::string 作为其构造函数。现在我想将 main() 中“a”的类型从 std::string 更改为 A,定义如下:

class A {
public:
A(const std::string& str):m_str(str) { }
A(const char *str):m_str(str) { }
A(const A& a):m_str(a.m_str) { }
A& operator=(const A& a) { m_str = a.m_str; return *this; }

private:
std::string m_str;
};

所以现在我有一个新的 main():

main()
{
A a = "abc";
B b(a);
}

这不能按原样正确编译。在不更改新的 main() 的情况下,我能做些什么吗?我无法更改 B 类,并且 A 类不应以任何方式引用 B 类。谢谢!

最佳答案

添加一个转换运算符

class A {
public:
....
operator const std::string()
{
return m_str;
}

关于C++类转换可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941970/

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