左边。必须有类/结构/联合C++错误
问题描述:
我试图打开一个输入和输出文件通过传递给一个函数的指针引用,但每次我尝试编译该程序时出现错误:“左'.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);
}
}
答
.
比*
更高的优先级,所以*fin.open(inputFilename, ios::in);
(及其他)被解释为*(fin.open(inputFilename, ios::in));
,这是不正确,因为fin
是一个指针
使用括号或更好,->
甚至可以下注ter,通过引用传递参数,我看不到需要通过指针传递。
+0
哦,好的,谢谢!我明白你在说什么。我必须关注所有单一的陈述,因为它们都意味着不同的东西。就像这个,我需要一个括号,因为我只用fin作为指针,而不是整个语句。 – 2014-09-20 20:30:05
既可以做'(* fin).',或者甚至更具代表性,'fin->' – Cornstalks 2014-09-20 20:01:39