2013-05-10 89 views
0

我使用基於用戶輸入的switch語句來決定調用哪個函數。 然後,我想要將一個類對象傳遞給一個類函數,其中的代碼將填充該類對象的細節。 這裏是我的代碼段:C++將類對象傳遞給main函數時出錯?

//main.cpp 
void myswitch(int input) 
{ 
    switch (input) 
    { 
     case 1: 
     { 
      ElectricityBill eBill; 
      ElectricityBill::eBillData(eBill); 
      break; 
     } 
//---------------------------------------------- 
//bill.h 
class ElectricityBill: public Bill 
{ 
    public: 
     void eBillData(ElectricityBill eBill); 
}; 
//---------------------------------------------- 
//bill.cpp 
void ElectricityBill::eBillData(ElectricityBill eBill) 
{ 
    //get data 
} 

我得到的錯誤是: 錯誤:無法調用的函數「void ElectricityBill :: eBillData(ElectricityBill)」沒有對象

幫助表示讚賞,感謝提前。

回答

1

要調用一個成員函數,所以在對象上,其功能將被調用將被隱式傳遞給eBillData()功能,如果你只是做:

ElectricityBill eBill; 
eBill.eBillData(); 

這也許就是你實際上意味着要做。在這種情況下,eBillData不應採取任何明確參數(指針eBill將傳遞隱含),它會訪問它是通過隱this指針調用該對象的所有必要信息:

#include <string> 

class ElectricityBill: public Bill 
{ 
    public: 
     void eBillData(); 
    private: 
     std::string something; 
}; 

現在eBillData()的定義當然應該反映上面的聲明。請注意,在成員函數中,可以通過隱式指針或更常見的方式訪問該對象的數據成員,但只是使用它們的名稱而不使用this->間接引用。例如:

#include <iostream> 

void ElectricityBill::eBillData() 
{ 
    // The following two statements are equivalent... 
    std::cout << something; 
    std::cout << this->something; 
} 
+0

啊,非常感謝你們倆。 – user2369405 2013-05-10 09:46:10