将对象指针添加到位于类内部的指向对象的指针向量
Adding an object pointer to a vector of pointer-to-objects located inside a class
我正在尝试动态分配对象,然后将这些指向对象的指针添加到向量中。但是我收到错误:"请求从'库 (*)()' 转换为非标量类型'库'"。我该如何纠正?
我已经包含了下面的文件
项类
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
。
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它