将类对象从main传递到类函数时出错

c++ Error when passing class object into class function from main?

本文关键字:类函数 出错 对象 main      更新时间:2023-10-16

我使用基于用户输入的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)'

帮助是感激的,提前感谢。

您正在调用成员函数,因此,如果您只执行以下操作,则该函数将被调用的对象将隐式传递给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;
}