2014-09-20 2501 views
-4

我试图打开一个输入和输出文件通过传递给一个函数的指针引用,但每次我尝试编译该程序时出现错误:“左'.open'必须有一个类/结构/联合有人可以帮忙看一下有什么不对的代码呢?左边。必须有类/结构/联合C++错误

#include <fstream> 
#include <iostream> 
#include <iomanip> 
#include <cstdlib> 
#include <cctype> 

using namespace std; 

void PrepareFiles(ifstream* fin, ofstream* fout); 

int main(){ 
    ifstream fin; 
    ofstream fout; 

    PrepareFiles(&fin, &fout); 

    fin.close(); 
    fout.close(); 
    return EXIT_SUCCESS; 
} 

void PrepareFiles(ifstream* fin, ofstream* fout) 
{ 
    char inputFilename[MAX_LENGTH_FN + 1], 
     outputFilename[MAX_LENGTH_FN + 1]; 

    cout << "Input filename (up to " << MAX_LENGTH_FN << " characters): "; 
    cin.get(inputFilename, MAX_LENGTH_FN + 1, '\n'); 
    cin.ignore(999, '\n'); 
    cout << "Output filename (up to " << MAX_LENGTH_FN << " characters): "; 
    cin.get(outputFilename, MAX_LENGTH_FN + 1, '\n'); 
    cin.ignore(999, '\n'); 

    *fin.open(inputFilename, ios::in); 
    if (*fin.fail()) 
    { 
     cerr << "Error opening input file " << inputFilename; 
     exit(EXIT_FAILURE); 
    } 

    *fout.open(outputFilename, ios::out); 
    if (*fout.fail()) 
    { 
     cerr << "Error opening output file " << outputFilename; 
     exit(EXIT_FAILURE); 
    } 
} 
+1

既可以做'(* fin).',或者甚至更具代表性,'fin->' – Cornstalks 2014-09-20 20:01:39

回答

1

.*更高的优先级,所以*fin.open(inputFilename, ios::in);(及其他)被解释为*(fin.open(inputFilename, ios::in));,这是不正确,因为fin是一个指针

使用括号或更好,->甚至可以下注ter,通过引用传递参数,我看不到需要通过指针传递。

+0

哦,好的,谢谢!我明白你在说什么。我必须关注所有单一的陈述,因为它们都意味着不同的东西。就像这个,我需要一个括号,因为我只用fin作为指针,而不是整个语句。 – 2014-09-20 20:30:05

相关问题