我有一个课程entry并且被ostream& operator <<覆盖了.我还有一个辅助类cursor和一个类型转换operator entry().然后,在我的main()函数中,我有以下表达式:
cout << data[4];
Run Code Online (Sandbox Code Playgroud)
这里data[4]是一个cursor,但编译失败
错误:二进制表达式的操作数无效
我想要的是编译器转换data[4]为entry和使用它的<<运算符.有没有办法以上述方式调用此ostream运算符而无需添加特殊方法entry?
以下是一些代码:
class entry
{
friend class cursor;
/*here comes some data*/
public:
friend ostream& operator << (ostream& out, const entry& a);
};
Run Code Online (Sandbox Code Playgroud)
class cursor
{
database* data_;
size_t ind_;
friend class entry;
friend class database;
public:
cursor (database* a, size_t ind);
cursor (const cursor& a);
void operator= (const …Run Code Online (Sandbox Code Playgroud) c++ operator-overloading friend-function argument-dependent-lookup