问题描述
试图创建一个使用ifstream和offstream打开文件的函数,但是QT编译器告诉我未声明我的变量。程序要长得多,但是它的这个特定部分会导致错误。
我需要使函数能够在主代码中接收声明的变量,以便以后可以打开文件。 不能使用全局变量。 我可以在不使用函数的情况下运行程序,但这是必须的。
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:变量或字段“ OpenUserFile”声明为空
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:在此范围内未声明“ load”
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:“,”令牌之前的预期主表达式
无效的OpenUserFile(load&,ReceiptCreator&,Save&)
^
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:在此范围内未声明“ ReceiptCreator”
无效的OpenUserFile(load&,ReceiptCreator&,Save&)
^ /////////
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:“,”令牌之前的预期主表达式
无效的OpenUserFile(load&,ReceiptCreator&,Save&)
^ /////////////
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:在此范围内未声明“保存”
无效的OpenUserFile(load&,ReceiptCreator&,Save&)
^ /////////
/home/eip/Desktop/atm/ATMFINAL/main.cpp:18:错误:')'标记之前的预期主表达式
无效的OpenUserFile(load&,ReceiptCreator&,Save&)
^
#include<iostream>
#include<iomanip>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
void OpenUserFile(load&,ReceiptCreator&,Save&){
load.open("id.txt"); // reads id.txt.
if(load.fail()){ //If file has problems,user receives an error message
cout<< "Error reading user id" <<endl;
}
ofstream& ReceiptCreator,Save; // instruction to create a file.
ReceiptCreator.open("receipt.txt",ios::app); //prints out output to external .txt file.
if(ReceiptCreator.fail()){ //if error reading display,error message
cout<< "Error printing transaction receipt" <<endl;
}
}
int main(){
time_t C = time(0); // uses computers curren time
string CT = ctime(&C);// shows user current time
string account,userName,SocialSec,PassNum,UserBalance,Bankname,FirstName;
string LastName,AccountNum,SocialNum;//
int PassFile,PassUser,WithDrawal; // variables for user password
double InitialBalance,Deposit,CurrentBalance;// variables for aritmethic calculations
unsigned ATMNUM = 100+rand()%500; // randomizes atm number
int receipt,process,UI = -99,retry = 1; //
ofstream ReceiptCreator,Save;
ifstream load; // starts process to read user information.
int OpenUserFile(load&,Save&);
cout << "Loading data from file..." << endl;
解决方法
void foo(int x){}
是一个具有类型int
的参数的函数。
void foo(int){}
是具有一个类型为int
的未命名参数的函数。
void OpenUserFile(load&,ReceiptCreator&,Save&){}
是具有类型load&
,ReceiptCreateor&
和Save&
的未命名参数的函数。但是,这些不是您的代码中的类型。我会留给您找出正确的签名。
您必须一个个地修复错误,因为一个错误会混淆编译器并触发其他错误。我现在可以发现的另一个问题是
ofstream& ReceiptCreator,Save;
参考不能被初始化。我想这行仅仅是修复代码的尝试,因为名称是参数的名称,所以您可以删除该行。如果不是,则需要确定是将流作为参数传递,还是仅将其包含在函数中,而不能同时包含在函数中。