2011-02-26 68 views
1

我得到的兩個主要的錯誤,有我難住了:試圖用get函數從fstream的庫時沒有匹配功能呼叫

  1. 「的初始化無效「呼叫沒有匹配功能」類型'int &'的非const引用來自「int *」類型的臨時類型

任何人都可以伸出援手嗎?謝謝!

#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; 
} 

回答

1

錯誤1是因爲inData.get()不帶一個int,你應該做的

grade = inData.get(); 

,二是因爲名單實際上是一個int *,而不是一個int所以在輸入第四個參數()應該是int *而不是int &

0

的int []是不是int &。 int &是對整數的引用。 int list [8]是一個由8個整數組成的數組。它們不是同一件事。

0

對於第一個錯誤,您傳遞的是int而不是char或char *。請參閱下面的GET原型:

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 &。

相關問題