Мне нужно получить доступ к частным членам локального объекта из функции-члена. Пример объясняет это лучше, я думаю. Есть ли способ сделать это, не делая * публичным или не предоставляя функцию специально для назначения * 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];
....
}
Моя ошибка компиляции (г ++ 4.6.3) является:
error: request for member ‘a’ in ‘local’, which is of non-class type ‘object()’
Похоже, вы пытаетесь вызвать конструктор объекта, не так ли? Вам не нужно «()» при вызове конструктора по умолчанию, только когда вы передаете аргументы конструктору. – Brady