Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > shared_ptr с шаблонным классом


Автор: W4FhLF 9.8.2012, 19:26
Есть такой код:

Код

#include <iostream>
#include <memory>

template<class datatype, class errtype = datatype>
class Datum
{
public:
    Datum()
    {
        std::cout << "Hello World!" << endl;
    }
};

typedef std::shared_ptr<Datum<double> > DatumPtr;

int main()
{
    DatumPtr d(new Datum());
    return 0;
}


При компиляции gcc-4.6.1 выдаёт такое:

Цитата

/usr/include/c++/4.6/bits/shared_ptr_base.h:762: error: cannot convert 'int*' to 'Datum<double>*' in initialization


Кто-нибудь может объяснить в чём проблема и как решать?

Спасибо.

Автор: mes 9.8.2012, 19:39
Цитата(W4FhLF @  9.8.2012,  18:26 Найти цитируемый пост)
template...
class Datum

Цитата(W4FhLF @  9.8.2012,  18:26 Найти цитируемый пост)
new Datum())


Автор: W4FhLF 9.8.2012, 19:43
Туплю. Конечно же должно быть:

Код

DatumPtr d(new Datum<double>());

Автор: borisbn 10.8.2012, 06:15
А сообщение, мягко говоря, странное. При чём здесь int* ???

Автор: Earnest 10.8.2012, 06:32
А компилятор C++, по старой памяти, все, что не понимает, считает интом...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)