приведение типа при возврате из функции с shared_ptr - PullRequest
0 голосов
/ 04 января 2012
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 line 63 C / C ++ Проблема


эта функция одна из используемых на Фабрике

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Вы имели в виду

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

Ваш текущий код объявляет функцию, а конструктор для shared_ptr принимает указатель.

2 голосов
/ 04 января 2012
std::shared_ptr<FizPrinter> printer(FizPrinter);

означает «принтер является функцией с аргументом FizPrinter».

См. Вопрос 10.21: http://www.parashift.com/c++-faq-lite/ctors.html

...