Agr*_*hak 7 c++ pointers const vector
以下不编译(非常详细的错误,但基本上"不能重载"和"从'const void*'无效转换为'void*'").我可以理解为什么例如push_back()可能无法编译,因为你无法复制/移入a Foo* const,但为什么不编译:
Foo* const
#include <vector> using namespace std; class Foo; int main() { vector<Foo* const> vec; }
vso*_*tco 11
向量可能是唯一需要元素可复制分配的容器.这是因为保证元素在存储器中连续存储.因此,如果超出容量,则必须分配新块并重新分配元素.你不能用const元素来做这件事.
const
如果你尝试std::vector<const int>,或实际上任何const类型,同样的错误.
std::vector<const int>
Net*_*peC 5
您正在声明一个包含constFoo 指针的向量,这意味着该指针无法修改。当你在向量中插入一个元素时,需要写入a const pointer(无效)。
const pointer
您确定它不是:std::vector<Foo const *> vec;其中 Foo 不会被指针修改。
std::vector<Foo const *> vec;
归档时间:
10 年,5 月 前
查看次数:
9981 次
最近记录: