簡體   English   中英

創建抽象類c ++的對象

[英]create object of abstract class c++

在我的項目中,我有IAcquirer.h文件,該文件的內容如下所示

class IAcquirer {

        public:
            IAcquirer() {}
            virtual ~IAcquirer() {}
            virtual int initAcquirer(std::string ) = 0;
            virtual int processTransactionToHost(const transaction::Transaction &tr, transaction::TransactionDataContainer &txnDataContainer) =0;
            virtual int connect(bool) =0;
            virtual int disconnect(void) =0;
        };

現在,在另一個名為system.cpp文件中,創建了IAcquirer類的對象

boomer::host::IAcquirer *pAcquirer;
pAcquirer->processTransactionToHost(****,***);

但是據我了解,我們無法創建抽象類的對象,現在該對象正在其他文件中創建

您的理解是正確的,您不能創建抽象類的對象。

但是,您可以創建派生自抽象類的對象。 這些對象與其基本抽象類兼容,並且可以通過類型為抽象基本的指針或引用進行操作。

例如,這是有效的:

class RealAcquirer : public IAcquirer {
    virtual int initAcquirer(std::string ) {
        cout << "hello" << endl;
        return 0;
    }
    ... // Other pure virtual member functions implememted here
};

IAcquirer *make() {
    return new RealAcquirer();
}

一旦獲得了指向IAcquirer的指針,就可以通過它調用IAcquirer的任何成員函數,包括在派生類中重寫的純虛擬成員函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM