我想创建一个函数来检索同一个Class中先前函数的所有信息,并打印以一堆cout
语句的格式返回的值,没有什么可以让我返回在这个PrintStatement()函数中,所以我会创建一个void函数,对吗?我的问题出在int main()
,我不能cout
无效功能。
这是我的帐户头文件,以及我的account.cpp文件中的功能块。
class Account {
public:
//Object constructor
Account(char firstName[], char lastName[], char sinNumber[], double balance, int accountType, int transactions);
//Object operations
double DepositAmt(double amount);
double WithdrawAmt(double amount);
void PrintStatement();
double getFinalBalance(double fbal);
string getAccountType();
double getTransactions (double Deposit, double Withdraw);
private:
//Object properties
char firstName[255];
char lastName[255];
char sinNumber[255];
double balance;
int accountType;
int transactions;
};
void Account::PrintStatement()
{
cout << "First Name: " << firstName << endl;
cout << "Last Name: " << lastName << endl;
cout << "SIN Number: " << sinNumber << endl;
cout << "Account Type: " << accountType << endl;
cout << "Final Balance: " << balance << endl;
cout << "Transactions: " << transactions << endl;
};
全局变量已经初始化。
我尝试过的事情:
我最初尝试cout << account.PrintStatement() << endl;
,但我得到error C2679 (binary '<<' : no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion)
我认为可能改变应用于字符串函数的东西会起作用,但我会得到一堆int转换错误等。
我不确定该怎么做。
我 必需 将这些内容放入函数中以便明确。
我尝试使用这个问题https://stackoverflow.com/questions/12766858/how-to-call-void-function-from-main来帮助我,海报使用的是参考资料,但我没有这个意义。还有另一种方式吗?
答案 0 :(得分:4)
只需在您的类实例上调用该方法即可。它不需要返回任何东西;它会完成你想要的计数,然后返回主页。
答案 1 :(得分:4)
我最初尝试
cout << account.PrintStatement() << endl;
嗯,表达式account.PrintStatement()
是虚无的,因为函数有一个void
返回类型。正如您所指出的那样,该函数不返回任何内容,因此没有任何内容可以流式传输到cout
。
函数本身已经将大量内容流式传输到cout
,满足了您cout
的所有需求。所以,只需调用它:
account.PrintStatement();
那就是它!
答案 2 :(得分:2)
当我们使用cout<<something_here
时,编译器会将其解释为“打印something_here
的值”。现在,something_here
可以是很多东西。当它是一个函数时,cout
将打印函数返回的值。在您的情况下,返回类型是void
,即没有。所以,没有什么可以打印的。
要解决您的问题,您可以直接致电account.PrintStatement();
,因为您已在此功能中打印了要打印的内容。