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

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]