我有一个项目利用第三方库创建了一个方法,该方法需要传入以下参数:const std::vector< const Image *>
在尝试创建std::vector< Image * >
时允许灵活地在向量中生成项目时,我无法将此类型传递给方法。我假设VC ++ 2010会通过参数类型显示关于意图的方法,但似乎需要参数类型声明才能将其传入。以下是我最终使用的编译方式:
const Image *SRImages1 = &SRImages[0];
const Image *SRImages2 = &SRImages[1];
const std::vector< const Image *> SRImageVector(&SRImages1, &SRImages2);
tungsten::vision::SuperResolution::ResultEnum r = SR.enhance( &resultImage, SRImageVector, referenceImageIndex, referenceImageROI, interlaced, asynchronous, listener);
当然这是非常严格的限制,我希望能够通过使用push_back运算符动态生成项目。
为什么MS VC ++需要这个?我如何在这些限制内工作以创建一个我可以操作的向量?
编辑:从OP的评论中复制:
以下是.h文件中的签名:
ResultEnum enhance( Image *result,
const std::vector<const Image*> &images,
unsigned int referenceImageIndex,
Rectangle referenceImageROI,
bool interlaced,
bool asynchronous,
SuperResolutionListener *listener );
答案 0 :(得分:0)
根据您的评论判断,实际参数似乎是
const std::vector< const Image *>&
换句话说,它是通过const引用取vector
。这意味着您可以使用push_back
简单地构造一个非常量向量,并将其传递给enhance
。 e.g。
const Image *SRImages1 = &SRImages[0];
const Image *SRImages2 = &SRImages[1];
std::vector< const Image *> SRImageVector(&SRImages1, &SRImages2); // Iteration constructor.
SRImageVector.push_pack(new Image); // Example only - beware memory leak
tungsten::vision::SuperResolution::ResultEnum r = SR.enhance( &resultImage,
SRImageVector,
referenceImageIndex,
referenceImageROI,
interlaced,
asynchronous,
listener );