从带有shared_ptr的函数返回时进行类型转换

type casting when return from function with shared_ptr

本文关键字:返回 类型转换 函数 shared ptr      更新时间:2023-10-16
std::shared_ptr<AbstractPrinter> parse_input_fiz(char const *input) {
    std::shared_ptr<FizPrinter> printer(FizPrinter);
    return printer;
}

继承了AbstractPrinter。我得到了下一个错误:

描述资源路径位置类型无法转换"打印机"从' std::shared_ptr (*)(FizPrinter) '到"std::要查看"解析器。cc/pdf-i/src行63 C/c++问题


你是说

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

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

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

表示"printer是一个参数为FizPrinter的函数"。

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