如果没有返回,如何向main调用void函数?

时间:2015-03-01 00:06:26

标签: c++

我想创建一个函数来检索同一个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来帮助我,海报使用的是参考资料,但我没有这个意义。还有另一种方式吗?

3 个答案:

答案 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();,因为您已在此功能中打印了要打印的内容。

相关问题