将常量指针作为参数传递时出错
error while passing const pointer as parameter
我正在尝试更正一段C++代码。(它是为了这个目的而写的,错误也是如此…)
错误:从
'const Book*'
到std::vector<Book*>::value_type {aka Book*}'
的转换无效[-fpermission]
在这种方法中
void Bibliography::addBook(const Book *newBook)
{
books.push_back(newBook);
}
矢量被定义为
std::vector<Book *> books;
现在我的主要问题是,const能达到什么程度?它的意思是"这个函数不能修改newBook",还是使向量中的元素也成为常量?
根据这个答案,我是否必须删除常量,或者有其他方法来解决这个问题?
来自评论:
std::vector<const Book *> books;
可以吗?不,这本书是可编辑的
如果要将指向的指向向量的book
指针保持可变,则需要从addBook
的参数类型中删除const
限定符。否则,指针传递的book
对象必须被视为const
。
有别的办法解决这个问题吗?
我建议使用共享或唯一智能指针的矢量来代替常规指针的矢量。这将帮助您自动管理内存:
std::vector<std::unique_ptr<Book>> books;
从矢量中删除Book
对象时,唯一指针将释放内存。
相关文章:
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 使用模板函数传递模板参数时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 在运算符中将联合作为参数传递时出错<<
- C++ 在C++中通过引用将枚举作为默认参数传递时出错
- 将非静态函数作为参数传递时出错
- 传递具有依赖嵌套参数类型的模板模板参数时出错
- 将模板参数传递到内部结构时出错
- 将'const'作为参数传递'this'时出错
- C++将模板类型作为参数传递会出错
- 将std::vector作为模板模板参数传递时出错-在GCC中有效,在MSVC中失败
- 将数组作为函数参数传递时出错
- 在C++中将 2d 数组作为函数参数传递时出错
- 使用常量限定符将参数传递到模板函数时出错
- 将常量指针作为参数传递时出错
- 将“const”作为“const double”的“this”参数传递时出错,将丢弃限定符
- 传递std::map作为模板模板参数时出错
- 向函数传递参数时出错
- 将函数指针作为构造函数的参数传递给私有实例变量时出错
- 传递参数时出错,并将其转换为十六进制