簡體   English   中英

std::make_shared 接口?

[英]std::make_shared an interface?

我有一個繼承自 IComponent 的組件 class。 此 function 將一個組件與另一個鏈接。

    void Component::link(IComponent &other)
    {
        components->setRef(std::make_shared<IComponent>(other));
    }

當我編譯我的程序時,我有這個錯誤:

error: invalid new-expression of abstract class type ‘IComponent’

我怎樣才能解決這個問題?

PS:我知道我無法實例化一個接口,因為她包含純虛擬 function,但我不知道如何避免這個問題

很不清楚你在這里想做什么。 “setRef()”聽起來它的參數是一個引用,如果是這樣,你不需要對(智能)指針做任何事情。 您至少應該展示該方法的原型。

如上所述,如果您想“復制”“其他”,您應該通過“克隆”接口來完成,例如創建虛擬“IComponent* IComponent::clone()”方法並在組件中正確實現它。 此外,如果保證“其他”是對 Component 的引用,您可以強制轉換和復制構建新實例(但這不太可能是您的老師希望您做的)。

暫無
暫無

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

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