В настоящее время я читаю 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 );
}
Задача ещё не решена.