c ++从main传递类对象到类函数时出错?

时间:2013-05-10 09:30:22

标签: c++ class object

我正在使用基于用户输入的switch语句来决定调用哪个函数。 然后我想将一个类对象传递给一个类函数,在该类函数中,代码将填充该类对象的细节。 以下是我的代码段:

//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 个答案:

答案 0 :(得分:1)

您正在调用成员函数,因此,如果您这样做,将调用该函数的对象将隐式传递给eBillData()函数:

ElectricityBill eBill;
eBill.eBillData();

这可能是你真正想做的事情。在这种情况下,eBillData不应该使用显式参数(指向eBill的指针将隐式传递 ),它将访问所有必需的有关通过隐式this指针调用它的对象的信息:

#include <string>

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

现在eBillData()的定义当然应该反映上述声明。请注意,在成员函数中,您可以通过隐式this指针或(更常见地)访问函数的对象的数据成员,但只使用其名称而不使用this->间接。例如:

#include <iostream>

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