为什么编译器说功能已经存在?

时间:2014-10-25 08:13:30

标签: c++ fstream

我想计算一个文件的行,然后对它做一些事情。我决定提取将行计数为单独函数的逻辑。

unsigned int countLines(std::ifstream in)
{
    string line;
    int lineCount = 0;
    while(getline(in, line))
        ++lineCount;
    return lineCount;
}

在定义任何函数之前,我声明了函数的原型。然而,编译器抱怨"以前删除了#unsigned int countLines(std :: ifstream)'但谷歌搜索我无法在ifstream中找到任何实际的countLines函数。为什么会这样?

文件的顶部
#include <cstdlib>
#include <iostream>
#include <fstream>

没有头文件。

我称之为const

ifstream inFile(filename);
unsigned int vehichles = countLines(inFile);

并提供警告说明:综合方法'std:basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)' first required here

1 个答案:

答案 0 :(得分:3)

您无法按值传递流。