2012-05-02 3 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]; 
    .... 
} 

Моя ошибка компиляции (г ++ 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, поэтому вопрос из-за наиболее неприятной разборе.