scoped_ptr для вызова функции-члена выдает ошибку

В настоящее время я читаю Accelerated C++ ch13 и подумал о создании примера программы, приведенной в книге через boost scoped_ptr, но обнаружил ошибку.
Ребята, пожалуйста, выручите меня.

**

***error: cannot use arrow operator on a type
      record->read( cin );***
            ^

**

Оригинальный пример кода показан ниже, и это работает безупречно

std::vector< Core* > students ; // read students
    Core* records;
    std::string::size_type maxlen = 0;
    // read data and store in an object
    char ch ;

        while( cin >> ch )
        {
            if( 'U' == ch )
            {
                records = new Core;

            }
            else if( 'G' == ch )
            {
            records = new Grad;
            }

         records->read( cin );

        maxlen = max( maxlen , records->getname().size() );
        students.push_back( records );
    }

Теперь с помощью scoped_ptr МОЯ ВЕРСИЯ

typedef boost::scoped_ptr<Core> record;
    std::vector< record > students;
    char ch;
    std::string::size_type maxlen = 0;
    // read and store
    while( ( cin >> ch )   )
    {
        if( ch == 'U')
        {
            record( new Core);
        }
        else if( ch == 'G')
        {        
             record( new Grad);
        }

       record->read( cin );// GOT ERROR
       //maxlen = max( maxlen, record->name().size() );// SAME type of  error I EXPECT HERE
      // students.push_back( record );

    }

0 ответов

Другие вопросы по тегам