2013-10-29 61 views
0

我在介紹學習C++的計算機科學課程。我們目前的項目涉及到輸入該人擁有哪種類型的銀行賬戶(商業或個人),並遵循不同的途徑。我發現這會導致我寫兩個輸出函數,一個用於每種不同類型的賬戶。基於變量的輸出

會有一種方法可以讓我編寫1個輸出函數,但會根據他們選擇的帳戶類型輸出信息嗎?

例如我在想的是給每個選擇一個數字。這個例子將是個人的0和商業是1.當他們進入什麼類型時,它將數字1或0分配給一個變量,然後我輸出的每個變量將基於if語句,如果X等於1,則輸出Y如果不是輸出Z.

任何幫助將不勝感激,如果這不清楚,我可以提供有關該項目的更多信息。

謝謝。

+4

是的,你絕對可以做到這一點,很簡單。只要實現你上面描述的內容,它就可以工作。 – benjymous

+0

在專業的質量應用程序中,您可以使用稱爲「模板設計模式」的東西來實現此要求。但是在這個階段,這有點太過先進。現在記下它,做上面描述的內容,並且一旦你學習了面向對象的編程以達到高標準,請重新訪問這個問題,並閱讀關於這個設計模式的內容,並瞭解如何以這種方式實現您的解決方案。 –

回答

1

模板來幫助您開始:

enum AccountType { Checking, Savings }; 

void Output(AccountType userAccount) 
{ 
    switch (userAccount) 
    { 
    case Checking: 
    // do something here for checking accounts 
    break; 
    case Savings: 
    // do something here for savings accounts 
    break; 
    } 
} 

肯定有其他的方式,但是這很容易理解。

+0

用於優先使用枚舉來定義和int的+1。 – SirDarius

+1

謝謝你,這樣做對我來說簡單得多!非常感謝! –

0

是的,當然有這樣的做法。不需要爲CommercialAccounts和PersonalAccounts分別分類,繼承等,你可以做

#define COMMERCIAL 0 
#define PERSONAL 1 

void printAccount(int account_type /* add parameters for the actual account data */) { 
    switch(account_type) { 
    case COMMERCIAL: 
    // do stuff... 
    break; 
    case PERSONAL: 
    //do stuff... 
    break; 
    default: 
    std::cerr << "Error: " /* invalid input error message */ << std:: endl; 
    } 
}