Я использую GCC 4.2.4.
Согласно Schildt, «C ++ The Complete Reference», 1995, пользовательские параметризованные манипуляторы должны быть определены как:
istream &mymanip(istream &stream, type param)
{
// here my code
return stream;
}
// overload
imanip<type> mymanip(type param){
return imanip<type>(mymanip, param)
}
// usage
cin >> mymanip(param);
Я считаю, что imanip (mymanip, param) должен возвращать объект, который содержит аргументы mymanip и mymanip. Это должно быть использовано перегруженным оператором >> для вызова mymanip. Однако это не работает, imanip не объявлен.
Я также найденный эта версия:
IMANIP(int) fld(int n){
return IMANIP(int)(fld,n);
}
что тоже не работает.
Мои вопросы:
Спасибо за ваше время.
Код, который вы разместили, кажется вне контекста. imanip
выглядит как какой-то шаблон, но этот шаблон никогда не определяется нигде в вашем коде.
Но, честно говоря, я бы даже не подумал об использовании книги 1995 года по C ++. В 1995 году C ++ даже не был стандартизирован, хотя существовало «аннотированное справочное руководство». Вашей книге более 17 лет, что означает «более чем устаревший», когда речь заходит о языках программирования. С ++ с тех пор многое изменилось, вы должны подумать о покупке более новой книги, возможно, взглянуть на http://isocpp.org/get-started дать вам несколько примеров.
Чтобы дать вам более конкретные ответы на ваши вопросы:
Ваша проблема — что-то читать Шильдтом. В будущем не тратьте впустую свои деньги на Bullschildt.
Я выучил «пользовательские параметризованные манипуляторы», прочитав их по порядку: