也許這是一個簡單的問題,因爲我還是C++的新手。我想用某種工廠來將日誌記錄封裝在我的應用程序中。這個想法是隻有工廠知道哪個具體類將處理函數調用。應用程序將始終調用基本日誌記錄類的抽象接口。返回工廠中的unique_ptr
工廠方法應該是這樣的:
std::unique_ptr<AbstractLoggingClass> Factory::getDefaultLogger(const std::string& param){
return new ConcreteLoggingClass(param);
}
ConcreteLoggingClass
是AbstractLoggingClass
一個子類。
,但我得到了以下錯誤:
Error: could not convert '(operator new(64ul), (<statement>,
((ConcreteLoggingClass*)<anonymous>)))' from 'ConcreteLoggingClass*'
to 'std::unique_ptr<AbstractLoggingClass>'
我的問題是,我不知道如何實例ConcreteLoggingClass
並返回到unique_ptr
AbstractLoggingClass
我已經找到this post,但我還是不要沒有看到解決方案。
爲什麼?請你解釋一下,而不是默默無聞地冷靜下來。 –
我仍然沒有得到downvote。但是要感謝其他人提供有用的答案。 –