也许这是一个简单的问题,因为我还是C ++的新手。我想使用某种工厂将日志记录封装在我的应用程序中。这个想法是,只有工厂知道哪个具体类将处理函数调用。应用程序将始终调用基本日志记录类的抽象接口。
工厂方法应如下所示:
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
我已经找到了这篇文章,但仍然看不到解决方案。
std::unique_ptr
您想要的构造函数是explicit
,因此您需要……很好……对此明确。尝试
return std::unique_ptr<AbstractLoggingClass>(new ConcreteLoggingClass(param));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句