使用shared_ptr从函数返回时输入类型

时间:2012-01-04 13:04:34

标签: c++ casting shared-ptr

std::shared_ptr<AbstractPrinter> parse_input_fiz(char const *input) {
    std::shared_ptr<FizPrinter> printer(FizPrinter);

    return printer;
}

FizPrinter继承自AbstractPrinter。然后我得到了下一个错误:

  

说明资源路径位置类型无法转换'打印机'   从'std :: shared_ptr(*)(FizPrinter)'到   'std :: shared_ptr'searser.cc / pdf -i / src第63行C / C ++   问题


此功能用于工厂

2 个答案:

答案 0 :(得分:4)

你的意思是

std::shared_ptr<FizPrinter> printer(new FizPrinter());

您当前的代码声明了一个函数,shared_ptr的构造函数接受了一个指针。

答案 1 :(得分:2)

std::shared_ptr<FizPrinter> printer(FizPrinter);

表示“打印机是带参数FizPrinter的函数”。

见问题10.21:http://www.parashift.com/c++-faq-lite/ctors.html