1

ヘッダファイル:

class A
{
public:        
    void setNumber(unsigned );
    void changeNumber();  
    unsigned result;

    class B
    {
    public:
        void setResult();
        unsigned valorB;
    };

private:                           
    static unsigned number; 
};

実装ファイル:

void A::setNumber(unsigned value)
{
    number = value;
}

void A::changeNumber()
{
    result = number * 5 + 10;
}

void A::B::setResult()
{
    valorB = number + 5;
}

内部クラスの変数にアクセスするにはどうすればよいですか? A の変数にアクセスする方法は知っていますが、B の変数にアクセスする方法がわかりません。

「valorB」にアクセスしたい。

4

2 に答える 2

2

クラスを宣言するだけでは不十分です。その変数にアクセスするには、クラスのインスタンスが必要です。Bたとえば、次のAように、メンバー変数の宣言を class に追加できます。

class B
{
public:
    void setResult();
    unsigned valorB;
};
B memberB;

valorBこれで、次のようにアクセスできます。

A a;
a.memberB.valorB = 3;

コードのもう 1 つの問題は、宣言された静的変数の定義の欠如ですnumber。これを CPP に追加する必要があります。

unsigned A::number;
于 2012-07-14T03:00:45.600 に答える
1

表示されるエラー メッセージに基づいて、

undefined reference to A::number

問題は とは関係ありませんvalorB。問題は、 の定義を提供していないことですA::number.cppファイルに追加します。

unsigned A::number;
于 2012-07-14T03:02:32.117 に答える