2013-05-10 67 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