我正在使用基于用户输入的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)'没有对象
提前感谢您的帮助。
答案 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;
}