如何访问私有变量?

IAE*_*IAE 0 c++ private class

这个问题并不意味着听起来像现在可能是侮辱性的.

这是一个家庭作业,规格表很少,设计很差,至少可以说.我们有一个功能:

double refuel( int liter, GasStation *gs )
{
    // TODO: Access private variable MaxFuel of gs and decrement.
}
Run Code Online (Sandbox Code Playgroud)

声音够简单?它应该是,但GasStation类没有访问私有变量MaxFuel的功能.那么我怎样才能使用函数加油来访问它?

我不打算创建一个函数,setFuel( int liter )因为如果我改变他的规范,老师总是抱怨相当有力.所以...我想我必须做一些破解,但是我不知道如何在没有明确改变GasStation中的唯一功能并给它一个参数的情况下解决这个问题,这样我就可以在这里调用它.

或许任何提示?

sbi*_*sbi 16

现在这听起来像一个真正糟糕的家庭作业.

无论如何,我可以想到三种访问私有数据的方法:

  1. 通过公共成员职能
  2. 一个friend班级
  3. 作弊:

    #define private public 
    #include "the_class.h"
    #undef private
    
    Run Code Online (Sandbox Code Playgroud)

前两个是合法的,但要求你改变课程.最后一个是"非侵入式"(对于某些"非侵入性"的定义,无论如何),但绝对是非法的(虽然我还没有看到编译器它不起作用).

  • #3很脏!我之前没见过:) (6认同)