Конструктор копирования и методы GetX SetX
От: Аноним  
Дата: 02.05.11 09:18
Оценка:
У меня есть класс
В конструкторе копирования ошибка компиляции..
что вроде бы естесвтенно так как там происходит доступ к this..
что для const объекта невозможно...
Как правильно днлать такие вещи?
Я конечно могу просто поле публичное завести вместо Set/Get и все будет работать, но...
class TransactionEntity
{
private:
int id;
public:
    
    TransactionEntity()
    {

    }

    TransactionEntity(const TransactionEntity &entity)
    {
        this->SetId(entity.GetId());//тут ошибка компиляции..
    }


int GetId()
{
return this->id;
}

int SetId(int id)
{
this->id = id;
}
Re: Конструктор копирования и методы GetX SetX
От: Андрей Россия  
Дата: 02.05.11 09:22
Оценка: 2 (2)
Здравствуйте, Аноним, Вы писали:

  int GetId() const
  {
    return id;
  }
Re: Конструктор копирования и методы GetX SetX
От: uzhas Ниоткуда  
Дата: 02.05.11 09:26
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>У меня есть класс

А>В конструкторе копирования ошибка компиляции..
А>что вроде бы естесвтенно так как там происходит доступ к this..
А>что для const объекта невозможно...
А>Как правильно днлать такие вещи?
если у вас есть неизмеяемый (const) объект, то у него можно вызывать только константные методы
метод GetId надо сделать константным, т.к. он не меняет состояние класса
ну а SetId должен возвращать либо void либо дописать код, который возвращает число
пример:
http://ideone.com/Aw6RV
Re: Конструктор копирования и методы GetX SetX
От: K13 http://akvis.com
Дата: 02.05.11 11:46
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>У меня есть класс

А>В конструкторе копирования ошибка компиляции..
А>что вроде бы естесвтенно так как там происходит доступ к this..
А>что для const объекта невозможно...
А>Как правильно днлать такие вещи?
А>Я конечно могу просто поле публичное завести вместо Set/Get и все будет работать, но...
А>
А>    TransactionEntity(const TransactionEntity &entity)
A>      : id( entity.id )
А>    {
A>        //this->>SetId(entity.GetId());//тут ошибка компиляции..
А>    }
А>
Re[2]: Конструктор копирования и методы GetX SetX
От: Erop Россия  
Дата: 02.05.11 23:48
Оценка:
Здравствуйте, K13, Вы писали:

А>>Я конечно могу просто поле публичное завести вместо Set/Get и все будет работать, но...

А>>
А>>    TransactionEntity(const TransactionEntity &entity)
A>>      : id( entity.id )
А>>    {
A>>        //this->>SetId(entity.GetId());//тут ошибка компиляции..
А>>    }
А>>



С подходом согласен, а ТС могу посоветовать заботать, что такое private члены и кто имеет и не имеет к ним доступ. Ну и в том, что такое константность разобраться тоже не помешает
Автор: Erop
Дата: 04.09.07
...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.