将类对象从main传递到类函数时出错
c++ Error when passing class object into class function from main?
我使用基于用户输入的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;
}
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 用pybind11包装C++抽象类时出错
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- C++迭代器:实现迭代器类时出错
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 类中私有结构的构造函数出错
- 我的类默认构造函数出错
- 尝试在<int>构造函数中使用 vector 启动类时出错
- 线程调用类函数时出错
- 从基类指针访问派生类函数时出错
- 调用类的函数出错
- 使用类函数创建线程时出错
- 将类对象从main传递到类函数时出错
- 通过包装对象上的函数指针调用类方法出错
- 使用Boost传递类函数时出错