C++ 重载流式处理操作员问题

C++ 重载流式处理操作员问题,c++,C++,我有一个问题,通过操作员过载打印。目前,我正在创建一个数据库,其中包含一个Item类作为基类,Item的派生类是Movie、Book和MusicAlbum。以下是如何将书籍插入图书馆的示例: Item *item; cout << ">>>>>> adding items to library:" << endl << endl; item = library->addBook("The Curious Inc

我有一个问题,通过操作员过载打印。目前,我正在创建一个数据库,其中包含一个Item类作为基类,Item的派生类是Movie、Book和MusicAlbum。以下是如何将书籍插入图书馆的示例:

Item    *item;

cout << ">>>>>> adding items to library:" << endl << endl;
item = library->addBook("The Curious Incident of the Dog in the Night-Time",  "Mark Haddon", 240);
if (item != NULL) {
    library->addKeywordsForItem(item, 2, "autism", "Asperger's Syndrome");
    cout << item << endl;
    }
Item*Item;

cout通常是具有转发到虚拟函数的全局重载:

struct Base {    
    virtual std::ostream &print(std::ostream &os) const { 
        return os << base_data;
    }
};

struct Derived : Base {     
    virtual std::ostream &print(std::ostream *os) const { 
       return os << derived_data;
    }
};

std::ostream &operator<<(std::ostream &os, base const &b) { 
    return b.print(os);
}
struct Base{
虚拟std::ostream&print(std::ostream&os)常量{

返回操作系统
运算符的重载指针的初始化在我们被指示不要更改的代码中的一部分,以及运算符重载函数的位置。@Iannindquist,我很抱歉。我看到了所有内容,除了代码中的
项=
部分。这帮了我们很多忙,我想会解决我的问题。谢谢!
struct Base {    
    virtual std::ostream &print(std::ostream &os) const { 
        return os << base_data;
    }
};

struct Derived : Base {     
    virtual std::ostream &print(std::ostream *os) const { 
       return os << derived_data;
    }
};

std::ostream &operator<<(std::ostream &os, base const &b) { 
    return b.print(os);
}