簡體   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