定义cout导致<<重载、cout.precision等出现错误,如何解决?

使用宏定义,定义cout导致<<重载、cout.precision等出现错误
相关宏定义及代码

#define cout cout<<"[File:"<<FILENAME<<",Line:"<<LINE<<"]"
friend ostream& operator <<(ostream& cout, ClassFather& f);
cout.precision(7);
cout.setf(ios_base::showpoint);

运行结果及报错内容

重载<<出现的错误

img


cout.precision和cout.setf出现的错误

img

换个宏名

你相当于把cout这个名称变成了一个宏了
但你后面又需要调用实际的cout函数,有冲突,编译器会认为你的cout是调用宏而不是cout函数
建议要么宏改名,要么调用实际的cout函数时,写成std::cout


可以看下cpp参考手册中的 c++-cout