簡體   English   中英

在C ++中的另一個類的方法中使用實例的變量

[英]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 cclass 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM