-1

我有以下问题。我想为我的类创建一个文件构造函数。我正在使用std::copy算法,但出现这种错误:

No instance of constructor std::istream_iterator ... matches the argument list
error C2440: <function-style-cast> cannot convert from std::ifsteam to std::istream_operator

这是我的构造函数:

CAirport(const char* FileName, const string& name, const int& num)
{
    m_strName = name;
    m_uNum = num;
    ifstream iStream(FileName);

    if(iStream.good())
    {
        copy(istream_iterator<CAirtravel, unsigned>(iStream),
             istream_iterator<CAirtravel, unsigned>(),
             back_inserter(m_mAirtr));
    }
}
4

1 回答 1

0

std::istream_iteratorexpect的构造函数istream_type,它是一个typedeffor std::basic_istream<CharT, Traits>

您正在用 实例化std::istream_iteratorCharT = unsigned int这不是std::ifstream's char。为什么要这么做?完全省略第二个参数,让它默认为char

std::copy(std::istream_iterator<CAirtravel>(iStream),
          std::istream_iterator<CAirtravel>(),
          std::back_inserter(m_mAirtr));
于 2016-03-13T12:41:36.023 回答