如何解决在c ++中,关于向量push_back的问题,我不确定如何在内填充
| 我有一个关于vector
push_back()
的问题。我正在编写代码以将图像获取到缓冲区中并将其存储在vector
中。我检查了可能需要使用push_back()
,但是现在不确定我应该如何格式化pImageBuffer
可以将它存储到ѭ0中。也许这是另一个容易回答的问题,但是我一直在尝试整个上午,但仍然感到困惑。我希望有人能给我一些启发。在此先非常感谢!
Result.Buffer()来自相机SDK,它将由StreamGrabber.QueueBuffer续订。我的问题是每当我构建时都会出现如下错误:
std :: vector <_Ty> :: push_back \':Konvertierung des参数1 von \'const uint8_t * \'在\'unsigned char * const&\'中是不可能的
我的代码是这样的。
....
std::vector<uint8_t *> images(100);// here is the problem,it needs a \"const\",or delete const down const uint8_t *pImageBuffe.Thanks very much guys for your answers!!!
while(1){
....
const uint8_t *pImageBuffer = (uint8_t *) Result.Buffer();// Here I get the image data
images.push_back(pImageBuffer);// This is obvIoUs wrong,but I am not sure in side (),what should I do
StreamGrabber.QueueBuffer(Result.Handle(),NULL);
...
}
解决方法
您有
const uint8_t*
,但您的容器存储了uint8_t*
。
另请注意,您正在此处添加第100、101、102个元素,而不填充第0、1、2个元素...
您可能想要:
std::vector<const uint8_t*> images(100);
size_t i = 0;
while (i < 100) {
// ..
const uint8_t* pImageBuffer = (uint8_t*)Result.Buffer();
images[i++] = pImageBuffer;
// ..
}
或者您可能想要:
std::vector<const uint8_t*> images;
while (true) {
// ..
const uint8_t* pImageBuffer = (uint8_t*)Result.Buffer();
images.push_back(pImageBuffer);
// ..
}
或者您可能想要没有without11的组合。
,卸下const
:
std::vector<uint8_t *> images;//(100);
while(whateverCondition)
{
uint8_t *pImageBuffer = (uint8_t *) Result.Buffer();
images.push_back(pImageBuffer);
}
确保“ 14”函数在每次调用时分配新缓冲区。
,向量元素的类型必须与您放入其中的事物的类型相同(或至少兼容)。
我怀疑这是错误的,您正在将类型为const uint8_t *
的值推入元素类型为uint8_t *
的向量中-也就是说,您正在尝试将const指针转换为非const指针。
将向量的类型更改为std::vector<const uint8_t *>
。
,在您的代码示例中,唯一真正错误的是您正在尝试将ѭ15放入向量ѭ16中。尝试取下ѭ11,看看效果是否更好。
,您不需要(100)
-并且需要对const
保持一致。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。