我正在使用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参数的对象。这应由重载运算符&gt;&gt;使用。打电话给mymanip。但是,这不起作用,imanip没有声明。
我也found这个版本:
IMANIP(int) fld(int n){
return IMANIP(int)(fld,n);
}
这也行不通。
我的问题是:
感谢您的时间。
答案 0 :(得分:2)
您发布的代码似乎脱离了上下文。 imanip
看起来像某个模板,但该模板永远不会在代码中的任何位置定义。
但说实话,我甚至不会考虑使用1995年的C ++书。 1995年,C ++甚至没有标准化,尽管存在“带注释的参考手册”。你的书超过17年,在编程语言方面,这意味着“超过极端过时”。从那时起C ++已经发展了很多,你应该考虑购买一本更新的书,也许看看http://isocpp.org/get-started给你一些例子。
为您提供更具体的问题答案:
答案 1 :(得分:2)
您的问题是Schildt正在阅读的内容。将来,不要把钱浪费在Bullschildt上。
答案 2 :(得分:0)
我通过阅读顺序学习了“用户定义的参数化操纵器”: