我想知道如何在另一个类的函数中使用类的特定实例的变量。
举一个我想要做的例子,说我有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
};
非常感谢帮助,谢谢!
答案 0 :(得分:1)
您的代码示例对我来说没有多大意义,而且您并不清楚自己想要实现的目标。
"我如何在类c中的类a的特定实例中使用int pos的变量(见下文)?"
事实上,您无法从其他类访问任何private
类成员变量。
由于class c
和class 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
};