尝试使用fstream库中的get函数时没有匹配的调用函数

时间:2011-02-26 21:13:25

标签: c++

我在main中遇到了两个让我难过的错误:

  1. “没有匹配的通话功能”
  2. “无效初始化'int&'类型的非const引用来自临时的'int *'“
  3. 类型

    有人可以伸出援助之手吗?谢谢!

    标题

    #ifndef HEADER_H_INCLUDED
    #define HEADER_H_INCLUDED
    
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <cctype>
    #include <cstdlib>
    
    using namespace std;
    
    void extern input(ifstream&, ofstream&, int&, int&);
    
    
    
    #endif // HEADER_H_INCLUDED
    

    主要

    #include "header.h"
    
    using namespace std;
    
    int main()
    {
        int grade;
        int list[8];
        ifstream inData;
        ofstream outData;
    
        inData.open("Ch9_Ex4Data.txt");
    
        if (!inData)
        {
            cout << "Cannot open the input file."
                 << endl;
                return 1;
        }
    
        outData.open("DataOut.txt");
    
        inData.get(grade); // << ERROR 1 HERE
    
        while (inData)
        {
            input(inData, outData, grade, list); // << ERROR 2 HERE
        }
    
        output (outData, list)
    
        return 0;
    }
    

3 个答案:

答案 0 :(得分:1)

错误1是因为inData.get()不接受int,你应该做

grade = inData.get();

,第二个是因为list实际上是int *而不是int,所以input()中的第四个参数应该是int *而不是int&amp;

答案 1 :(得分:0)

int []不是int&amp ;.一个int&amp;是对整数的引用。 int list [8]是一个包含8个整数的数组。它们不是一回事。

答案 2 :(得分:0)

对于第一个错误,您传递的是int而不是char或char *。请参阅下面的获取原型:

istream::get

public member function
int get();
istream& get ( char& c );
istream& get ( char* s, streamsize n );
istream& get ( char* s, streamsize n, char delim );
istream& get ( streambuf& sb);
istream& get ( streambuf& sb, char delim );

对于第二个错误,你错误地传递了一个int数组,其中函数期望int&amp;。