2012-05-02 4 views
0

メンバー関数からローカルオブジェクトのプライベートメンバーにアクセスする必要があります。この例は、私がよりよく説明することを説明しています。 *公開することなく、または* aに割り当てるための特別な機能を提供せずにこれを行う方法はありますか?この演算子+関数は、ローカルオブジェクトに対して* aを何度も割り当てるか、または割り当てを解除する必要があります。(同じクラスタイプの)ローカルオブジェクトのプライベートメンバーにアクセスする

このpostは、これがうまくいくはずです。

// object.h 
class object { 
    char *a; 
    ... 
} 
// object.cpp 
object object::operator+(object const &rhs) const { 
    int amount = ... 
    object local(); 

    // this is ok 
    this->a = new char[amount]; 
    // this is ok too 
    rhs.a = new char[amount]; 
    // this is not 
    local.a = new char[amount]; 
    .... 
} 

マイコンパイルエラー(G ++ 4.6.3)である:

error: request for member ‘a’ in ‘local’, which is of non-class type ‘object()’ 
+0

オブジェクトコンストラクタをコールしようとしているようですね。コンストラクタに引数を渡すときにのみ、デフォルトのコンストラクタを呼び出すときに '()'は必要ありません。 – Brady

答えて

3
object local(); 

が実際に関数宣言ではなく、オブジェクト定義です。使用して変数を作成します。

object local; 

operator +は、クラスのメンバであるので、あなたがアクセスprivate会員の権利を持っているので、問題は最も厄介な解析によるものです。

関連する問題