メンバー関数からローカルオブジェクトのプライベートメンバーにアクセスする必要があります。例はそれをよりよく説明していると思います。*を公開せずに、または* 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()’