【发布时间】:2015-12-21 13:59:04
【问题描述】:
也许这是一个简单的问题,因为我还是 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
我已经找到this post,但我仍然没有找到解决方案。
【问题讨论】:
-
为什么?请您解释一下,而不是默默地投反对票。
-
我仍然没有得到反对票。但感谢其他所有人提供有用的答案。
标签: c++ factory-pattern unique-ptr