将对象指针添加到位于类内部的指向对象的指针向量

Adding an object pointer to a vector of pointer-to-objects located inside a class

本文关键字:指针 对象 向量 添加 于类内      更新时间:2023-10-16

我正在尝试动态分配对象,然后将这些指向对象的指针添加到向量中。但是我收到错误:"请求从'库 (*)()' 转换为非标量类型'库'"。我该如何纠正?

我已经包含了下面的文件

项类

class Item
    private:
        std::string idCode;
        std::string title;
    public:
        Item(std::string idc, std::string t)
        {
            this->idCode=idc;
            this->title=t;
        };

从项目类继承的书籍类

class Book: public Item   //class inherits from parent Item
{
private:
    std::string author;
public:
    //constructor
    Book(std::string idcIn,std::string tIn,std::string authorIn)
    :Item(idcIn, tIn)
    {    author=authorIn;}
};

保存指针向量的库类

class Library
    private:
        std::vector<Item*>holdings;
    public:
        void addLibraryItem(Item* item)
        {
            holdings.push_back(item);
        }

这是主文件

void addItem(Library);  //prototype for adding Item function
int main()
{
    Library lib();  //create Library object
    addItem(lib);   //ERROR POINTS TO HERE
    return 0;
}
void addItem(Library lib)
{
    Item *ptr=new Book("bookID", "Title", "Author")
    lib.Library::addLibraryItem(ptr);
}         

谢谢你的时间

Library lib();是错误的。此语句声明一个函数lib该函数返回Library并且不带任何参数

这应该Library lib;

您应该将函数addItem的定义更改为

void addItem(Library& lib)
{
    Item *ptr=new Book("bookID", "Title", "Author")
    lib.addLibraryItem(ptr);
}

能够调用引用对象的方法addLibraryItem,而不是它的副本

Library lib()更改为Library lib