-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

forであるstd::istream_iteratorexpectsのコンストラクター。istream_typetypedefstd::basic_istream<CharT, Traits>

ではない でインスタンス化std::istream_iteratorしています。どうしてそうするか?2 番目のパラメーターを完全に省略し、デフォルトにします。CharT = unsigned intstd::ifstreamcharchar

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