基类派生类绑定智能指针后的转换
Posted zeqi1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基类派生类绑定智能指针后的转换相关的知识,希望对你有一定的参考价值。
class A
public:
virtual ~A()
virtual void SetNumber(int number) = 0;
virtual void Fun();
;
void A::Fun()
std::cout << "A::Fun" << std::endl;
class B : public A
public:
virtual ~B()
virtual void SetNumber(int number) override;
virtual void Fun() override;
void Print();
private:
int m_number;
;
void B::SetNumber(int number)
m_number = number;
void B::Fun()
std::cout << "B::Fun" << std::endl;
void B::Print()
std::cout << m_number << std::endl;
int main(int argc, char* argv[])
std::shared_ptr<A> p = std::make_shared<B>();
p->SetNumber(argc);
std::shared_ptr<B> pB = std::dynamic_pointer_cast<B>(p);
if (pB)
pB->Print();
auto pA = std::static_pointer_cast<A>(pB);
if (pA)
pA->Fun();
return EXIT_SUCCESS;
以上是关于基类派生类绑定智能指针后的转换的主要内容,如果未能解决你的问题,请参考以下文章