我想为友元函数指定默认值,如下所示:
friend Matrix rot90 (const Matrix& a, int k = 1);
使用Xcode 5.1.1编译此行时,出现以下错误
./Matrix.hh:156:19: error: friend declaration specifying a default argument must be a definition
修复它的正确方法是什么?
谢谢!
答案 0 :(得分:8)
标准说(§8.3.6):
如果朋友声明指定了默认参数表达式,那么 声明应是一个定义,并且是唯一的声明 翻译单元中的功能或功能模板。
也就是说,如果在friend
声明中指定默认参数,则还必须在此处定义该函数。如果您不想这样做,请删除那里的默认参数,并为指定默认参数的函数添加单独的声明。
// forward declarations:
class Matrix;
Matrix rot90 (const Matrix& a, int k = 1);
class Matrix {
friend Matrix rot90 (const Matrix&, int); //no default values here
};