繁体   English   中英

智能指针构造函数错误

[英]Smart pointer constructor error

我试图了解智能指针的用法。 在下面的例子中,我打算将B类作为指向A类的智能指针。我得到以下链接器错误

error LNK2019: unresolved external symbol "public: __thiscall ClassB::ClassB(classA *)"

我好像错过了构造函数。 我不清楚应该在构造函数中从类A传递什么。 如果有人能解释,我将不胜感激。

 class A 
    {

     friend  class B;
    virtual methods ();

    protected:
    virtual ~A();

    }

    class B:public QSharedPointer<A>
    {
       B();
       B(A * pData);
       B(const  B &data);
      virtual ~  B();

    }

您获得的错误是链接器错误,而不是编译器错误,当您对函数进行原型设计但未实现它时,会发生(在其他情况下)错误。 您是否为B::B(A*)构造函数提供了实现? 如果是这样,你编译并将其链接到生成的可执行文件? 如果是,那么可以解释这两个问题的答案是“不”,那么你应该能够通过在实现中提供和链接来轻松解决这个问题。

如果您只是尝试使用智能指针,那么不应该尝试从QSharedPointer继承您需要的东西

QSharedPointer<A> ptr(new A());
ptr->do_something();

如果您正在尝试实现自己的智能指针,那么您仍然很可能不想继承其他智能指针类。 您可以查看scoped_pointer的boost实现,以获得基本智能指针的相当容易理解的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM