我正在尝试用一个整数参数实现一个操纵器。除了一点点不同,我认为我所做的正是本指南和这个问题中所说的。唯一的区别是我的操作员是一个成员而不是一个自由函数。
我将把我的代码的相关部分放在这里。一些运算符和其他内部例程将被省略以保持代码清洁。见下文:
主文件
#include "Display.h"
int main()
{
Display disp;
disp << position(3) << "some string here";
// ...
}
显示.h
struct manip
{
Display& (*_f)(Display&, int);
int _i;
manip(Display& (*f)(Display&, int), int i) : _f(f), _i(i) {}
};
manip position(int pos);
class Display
{
private:
int _cursor = 0;
void cursorPosition(int pos);
public:
Display& operator<<(manip& m);
friend Display& setPosition(Display& disp, int pos);
};
显示.cpp
#include "Display.h"
Display& setPosition(Display& disp, int pos)
{
disp.cursorPosition(pos);
return disp;
}
manip position(int pos)
{
return manip(setPosition, pos);
}
Display& Display::operator<<(manip& m)
{
return m._f(*this, m._i);
}
编译器返回此错误消息:
“'operator<<' 不匹配(操作数类型为 'Display' 和 'manip')”
有人可以告诉我我做错了什么吗?