无法将指针添加到类指针向量数组
Cannot add pointer to array of class pointers vector
我正在尝试在指针对象向量中添加指向对象的指针。"message_list"向量列出了指向抽象类 Message 的指针,该抽象类 Message 要么添加新的主题,要么回复,这两个子类继承了超类 Message。我的问题是当我尝试向向量添加新主题或回复时,我在编译时收到错误
错误:调用
/‘std::vector<Message*, std::allocator<Message*> >::push_back(Topic*&) const’
没有匹配函数usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:602:注意:候选者是:
void std::vector<_Tp, _Alloc>::push_back(const _Tp&)
[_Tp
=Message*
,_Alloc
=std::allocator<Message*>
]<near match>
错误与messag_list.push_back(msg)
一起:
Message* msg = new Topic( current_user->get_username(), subject, body, (message_list.size()+1) );
message_list.push_back(msg);
为什么我不能将此指针添加到我的指针向量?谢谢你的帮助!
编辑:这是完整的功能:
void Bboard::add_topic() const
{
string subject;
cout << "Enter Subject: ";
cin >> subject;
string body;
cout << "Enter Body: ";
cin >> body;
Message* msg = new Topic( current_user->get_username(), subject, body, (message_list.size()+1) );
message_list.push_back(msg);
cout << endl;
cout << "Message Recorded!" << endl;
cout << endl;
}
void Bboard::add_topic() const
它是一个 const 成员函数,这意味着此函数承诺不修改对象,但事实是您想要修改对象,因为message_list
是类的成员并且您正在向其添加项目。所以const
在这里是不合适的。只需将其删除并使其成为:
void Bboard::add_topic();
问题解决了!
多一点解释:
在 const 成员函数中,类的每个成员都变为 const,除非它使用关键字 mutable
声明,因此在您的 const 成员函数中,message_list
是 const 对象,因此当您想在此对象上调用 push_back
时,编译器会生成错误,因为push_back
函数只能在非 const 对象上调用。
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 如何更改唯一指针向量的可见性
- 如何在基类指针向量的元素上应用重载的多态函数
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 包含指向其他结构的指针向量的结构
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 初始化可变数据结构中的共享指针向量
- 指向具有 decltype 的函数的指针向量
- push_back指向指针向量的指针
- 使用指针向量(带代码)C++(以及对其使用的便利性的怀疑)时出现问题
- 我可以做些什么来改进指针向量中的此搜索?
- 指向指针排序向量的指针向量的 C++ 向量
- 初始化用户定义类的指针向量
- 函数无法识别我在C++传递节点指针向量?
- 如何声明指向类对象的指针向量?
- 指向结构的指针向量的元素具有相同的地址
- 删除指向抽象类的指针向量
- 当我返回指向结构的指针向量时出现段错误
- 用基于范围的for循环填充指针向量