对初始化的C ++向量 - 编译错误

时间:2016-11-07 09:31:54

标签: c++ c++11 initialization std-pair

我想初始化带有一些硬编码值的对矢量,我尝试使用不同的解决方案,但我不断收到编译错误。我的代码如下所示:

std::vector<std::pair<cv::HOGDescriptor, std::ifstream> > hogs_files = {
    std::make_pair(hog, file),
    std::make_pair(hog2, file2),
    std::make_pair(hog3, file3),
    std::make_pair(hog4, file4),
    std::make_pair(hog5, file5),
    std::make_pair(hog6, file6),
    std::make_pair(hog7, file7),
    std::make_pair(hog8, file8)
};

我得到的错误是:

Error   C2440   '<function-style-cast>': cannot convert from   'initializer list' to '_Mypair'

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

错误是因为fstream不是可复制构造的。

我建议你将你的ifstream移动到对的向量;更清晰和控制。

std::vector<std::pair<cv::HOGDescriptor, std::ifstream> > hogs_files = {
        std::make_pair(hog, std::move(file)),
        std::make_pair(hog2, std::move(file2)),
        std::make_pair(hog3, std::move(file3)),
        std::make_pair(hog4, std::move(file4)),
        std::make_pair(hog5, std::move(file5)),
        std::make_pair(hog6, std::move(file6)),
        std::make_pair(hog7, std::move(file7)),
        std::make_pair(hog8, std::move(file8))
    };