C++ 将静态方法转换为简单方法

C++ Convert static method to simple method

本文关键字:简单 方法 转换 静态方法 C++      更新时间:2023-10-16

我写了这个。

class A {   };
class B : public A
{
public:
static B Convert(const A &a) { return static_cast<const B&>(a); }
};
int main()
{
A a;
B b = B::Convert(a);
}

但是我想拥有这个,你知道怎么做吗?

B b = a.Convert();

提前感谢您的回答! ^^

一般来说,我会说,不要这样做。改用dynamic_cast<B*>(&a)查看此帖子

但是,如果您可以检查 a 是否属于 B 类型,则可以按如下方式实现它:

class A {
// ...
B& Convert() { return return static_cast<B&>(*this); }
}

但是要非常小心地检查这是否是一个有效的转换,否则你可能会在运行时!!得到未定义的行为