我想将一个类转换为另一个类。我正在尝试使用几乎总能为我工作的static_cas,为什么它不能在以下工作?
struct Mouse
{
Mouse() {}
// .......
};
struct Mice
{
Mice() {}
// .........
};
int main()
{
Mouse mouse;
Mice mice = static_cast<Mice>(mouse);
}
答案 0 :(得分:3)
如果Mice有一个接受鼠标的构造函数,或者鼠标有一个operator Mice
(后者不是特别推荐),你只能将鼠标实例强制转换为鼠标。
答案 1 :(得分:0)
因为mouse
不仅不是Mice
的实例,而且也不可能。{/ p>
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?