Static_cast类到另一个类

static_cast class to another class?

本文关键字:另一个 cast Static      更新时间:2023-10-16

我想将一个类转换为另一个类。我试图使用static_cas,这几乎总是为我工作,为什么它不工作在下面?

struct Mouse
{
    Mouse() {}
    // .......
};
struct Mice
{
    Mice() {}
    // .........
};
int main()
{
    Mouse mouse;
    Mice mice = static_cast<Mice>(mouse);
}

如果Mouse具有接受Mouse的构造函数,或者Mouse具有operator Mice(不特别推荐后者),则只能将Mouse的实例强制转换为Mice。

因为mouse不仅不是Mice的实例,而且不可能是。

struct SomeBase
{
  //...
};
struct SomeDerived : SomeBase
{
  //...
};
struct Unrelated
{
  //...
};
SomeBase * b;
SomeDerived * d;
Unrelated * r;
//....
b = static_cast<SomeBase *>(d); //allowed, safe
d = static_cast<SomeDerived *>(b); //allowed, unsafe
r = static_cast<Unrelated *>(d); //not allowed, what is it even meant to do?
相关文章: