[英]Using a Variable of an Instance within the Method of another Class in C++
我想知道如何在另一個類的函數中使用一個類的特定實例的變量。
為了提供我要執行的操作的示例,請說我有3個類a,b和c。 類c繼承自類b,並且在類a和b中的方法內分別調用b和c的單個實例。 我將如何在類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
};
幫助將不勝感激,謝謝!
您的代碼示例對我而言沒有多大意義,您也不清楚要實現的目標。
“我將如何在類c的類a的特定實例中使用int pos變量(見下文)?”
事實是您不能從其他類訪問任何private
類成員變量。
由於class c
和class b
沒有被聲明為class a
friend
,因此它們不能直接從a::pos
訪問pos
成員。 您必須將他們傳遞給a class a;
參考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()
的實例中使用它,例如(constructor):
c::c(const a& a_) { // <<< pass a reference to a
calculate(a_.getPos());
}
我不確定是否理解您的問題,但是如果您想從非友善的非基類訪問類實例的成員,則必須暴露該成員,並且必須有某些函數可以訪問它。 例如:
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
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.