我在瀏覽OpenCV的源代碼時,我得到了/core/src/convert.cpp此功能:C++遞歸調用參數
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
{
merge(&mv[0] ,3, _dst);
}
怎麼可能只有2個參數的原始功能:
合併(常量CV ::矢量MV &,CV ::墊_dst)
,並用3個參數
遞歸調用合併(常量CV ::墊*,INT,CV ::墊&)
我在瀏覽OpenCV的源代碼時,我得到了/core/src/convert.cpp此功能:C++遞歸調用參數
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
{
merge(&mv[0] ,3, _dst);
}
怎麼可能只有2個參數的原始功能:
合併(常量CV ::矢量MV &,CV ::墊_dst)
,並用3個參數
遞歸調用合併(常量CV ::墊*,INT,CV ::墊&)
這絕對不是一個遞歸調用。呼叫
merge(&mv[0] ,3, _dst);
並沒有叫
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
這一點是明確的,因爲參數計數不匹配。
解釋是merge
被重載。還有另外三個參數的版本。這三個參數版本是在您包含的其中一個頭文件中聲明的。
merge(&mv[0] ,3, _dst);
不是呼叫void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
。
必須有某處有重載函數,即具有相同名稱但簽名不同的函數。其中一個例如void merge(const cv::vector<cv::Mat>& mv, int something, cv::Mat _dst)
。
可能有另一個重載版本的merge。只要繼續尋找。 – stardust 2013-05-08 12:44:14
沒有他們不是:D我剛剛打開一個新的項目,並複製此功能,並從主叫它,它正在工作! – 2013-05-08 12:45:02
那不可能。記得你有一些包括:)。新項目不是一個空的項目。 – stardust 2013-05-08 12:45:55