gpt4 book ai didi

c++ - static_cast<> 和不相关的类转换

转载 作者:行者123 更新时间:2023-11-30 01:17:02 29 4
gpt4 key购买 nike

我有以下两个类:

 class B; 
class A
{
public:
A();
operator B() const;
};
class B
{
public:
B2();
};

这里,A定义了B类的隐式转换运算符。然后 C++ 引用说明如下“如果存在从 new_type 到表达式类型的隐式转换序列,则不包括左值到右值、数组到指针、函数到指针、空指针、空成员指针,或 bool 转换,然后 static_cast 可以执行该隐式转换的逆过程”。表示要编译以下内容

  A a;
B b=a;
A a1=static_cast<A> (b);

但是Xcode给出错误信息

最佳答案

您的 C++ 引用不精确。 标准(C++14 §5.2.9/7)说,

The inverse of any standard conversion sequence (Clause 4) not containing an lvalue-to-rvalue (4.1), array-to-pointer (4.2), function-to-pointer (4.3), null pointer (4.10), null member pointer (4.11), or boolean (4.12) conversion, can be performed explicitly using static_cast.

请注意它说的是标准 转换序列。 static_cast 无法执行用户定义转换的逆过程。也不难看出这是为什么。如果 static_cast 需要执行用户定义的转换序列的逆运算,它就必须能够逆向任意算法。例如,如果 A 包含一对整数,B 包含一个整数,并且 A::operator B() 将两者相乘整数,那么逆函数必须分解 B...

中的整数

关于c++ - static_cast<> 和不相关的类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395534/

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