0

我有一个使用 3rd 方库的项目,该库创建了一个需要传入以下参数的方法: 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 );
4

1 回答 1

0

从您的评论来看,实际参数似乎是

const std::vector< const Image *>&

换句话说,它采用了vectorby const 引用。这意味着您可以简单地使用 构造一个非常量向量push_back,并将其传递给enhance. 例如

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 );
于 2012-05-01T20:16:09.623 回答