0

メンバー関数からローカルオブジェクトのプライベートメンバーにアクセスする必要があります。例はそれをよりよく説明していると思います。*を公開せずに、または* aに割り当てるための関数を提供せずにこれを行う方法はありますか?このoperator+関数は、ローカルオブジェクトに*aを何度も割り当てたり割り当て解除したりする必要がある場合があります。

この投稿は、これが機能するはずであることを示唆しているようです。

// 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()’
4

1 に答える 1

3
object local();

は実際には関数宣言であり、オブジェクト定義ではありません。以下を使用して変数を作成します。

object local;

クラスメンバーであるため、メンバーoperator +にアクセスする権利があるprivateため、問題は最も厄介な parseによるものです。

于 2012-05-02T09:24:00.780 に答える