在C ++中使用另一个类的方法中的实例变量

时间:2015-05-06 17:31:22

标签: c++

我想知道如何在另一个类的函数中使用类的特定实例的变量。

举一个我想要做的例子,说我有3个班级a,b和c。类c继承自类b,并且b和c的单个实例分别在类a和b中的方法中调用。我如何在类c中的类a的特定实例中使用int pos的变量(见下文)?

class a
{
    private:
    void B(); //Calls an instance of class c
    int pos; //Variable that I want to use in c
};

class b : public c
{
    private:
    void C(); //Calls an instance of class b
};

class c
{
    private:
    void calculate(int _pos); //Method which requires the value of pos from class a 
};

非常感谢帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您的代码示例对我来说没有多大意义,而且您并不清楚自己想要实现的目标。

  

"我如何在类c中的类a的特定实例中使用int pos的变量(见下文)?"

事实上,您无法从其他类访问任何private类成员变量。

由于class cclass b未被friend声明为class a,因此无法从pos访问a::pos成员直。您必须在某个时刻向他们传递对class a;的引用,并使用getter函数向pos提供公共(读取访问权限):

class a {
    int pos; //Variable that I want to use in c
public:
    int getPos() const { return pos; } // <<< let other classes read this 
                                       //     property
};

class c()的实例中使用它,例如(构造):

c::c(const a& a_) { // <<< pass a reference to a 
   calculate(a_.getPos());
}

答案 1 :(得分:0)

我不确定我是否理解您的问题,但如果您想从非朋友非基类访问类实例的成员,那么必须公开该成员必须有一些访问它的函数。例如:

class a
{
public:
  int getPos() const { return pos; }
private:
  void B(); //Calls an instance of class c
  int pos; //Variable that I want to use in c
};
相关问题