在VC ++ 2010中传入const向量

时间:2012-04-20 13:52:58

标签: c++ visual-studio-2010 visual-c++

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

1 个答案:

答案 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 );