тип преобразуване при връщане от функция с shared_ptr

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

    return printer;
}

FizPrinter е наследен от AbstractPrinter. И получих следващата грешка:

Описание Resource Path Location Type не можа да преобразува „принтер“ от „std::shared_ptr (*)(FizPrinter)“ в „std::shared_ptr“ parser.cc /pdf-i/src ред 63 C/C++ Проблем


тази функция е една от използваните във фабриката


person Yola    schedule 04.01.2012    source източник


Отговори (2)


Имаше предвид

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

Текущият ви код декларира функция и конструкторът за shared_ptr приема указател.

person Dark Falcon    schedule 04.01.2012
comment
Или още по-добре, return std::make_shared<FizPrinter>(); - person Mike Seymour; 04.01.2012

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

означава "принтерът е функция с аргумент FizPrinter".

Вижте въпрос 10.21: http://www.parashift.com/c++-faq-lite/ctors.html

person zch    schedule 04.01.2012