无法使用ifstream :: operator>>使用ifstream参考

时间:2014-10-15 20:33:19

标签: c++ c++11

我正在使用C ++ 11。

std::ifstream继承自std::istream,所以它理论上应该能够完成所有相同的事情,但似乎并非如此。

我可以用两种方式定义相同的功能:

void parse(std::ifstream &file) {
        for (std::string word; file >> word; );
}

void parse(std::istream &file) {
        for (std::string word; file >> word; );
}

使用istream时,没有错误。

当我使用ifstream时,g ++和clang ++都会返回此错误(略有不同):

error: invalid operands to binary expression ('std::ifstream' (aka 'basic_ifstream<char>') and 'std::string' (aka 'basic_string<char>'))
        for (std::string word; file >> word; ) {
                               ~~~~ ^  ~~~~

我可以使用istream&并使用多态传递ifstream&,但我不愿意,我想知道为什么会发生这种情况。

0 个答案:

没有答案