小编tas*_*kie的帖子

在ostream和operator <<中键入转换

我有一个课程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

2
推荐指数
1
解决办法
63
查看次数