0

次のパラメーターを渡す必要があるメソッドを作成したサードパーティ ライブラリを利用するプロジェクトがあります: ベクターに項目を柔軟に生成できる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 *>&

言い換えれば、それはvectorconst参照によるものです。これは、を使用して非定数ベクトルを作成し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 に答える