ページ 11

friend指定とメンバメソッド

Posted: 2013年8月03日(土) 21:25
by レフェリア
あるクラスで異なるクラスのメンバメソッドをfriend指定をしようとすると、「存在しないメンバ関数」とエラーが出されました。
メンバメソッド内でのみprivateメンバ変数を使用したいです。
どうすればよいでしょうか?
因みにメンバメソッドはconstで修飾しています。

Re: friend指定とメンバメソッド

Posted: 2013年8月03日(土) 21:35
by h2so5
クラスの宣言の順序に問題があると思います。
friend指定の前に、対象のメソッドの宣言が必要になります。

コード:

class Foo {
public:
    void func() const;
};
 
class Bar {
    friend void Foo::func() const;
private:
    int member_;
};
 
void Foo::func() const
{
    Bar b;
    b.member_ = 0;
}

Re: friend指定とメンバメソッド

Posted: 2013年8月03日(土) 21:53
by レフェリア
h2so5さんありがとうございます。
エラーもなくコンパイルが通りました。