
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.10.2006, 17:20
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
В литературе рекомендуют параметр-ссылку переданную в конструктор копирования обозначать через const, чтобы не изменить исходный объект. Все получается, если обращаюсь к окрытым переменным исходного класса, но если доступ предоставляется через методы класса (а так чаще и бывает) то комп. выдает ошибку Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:26
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
TubrikЧто я делаю не так? Как правильно поступить, чтобы остался const и получать значение через метод класса, и все работало? Если свойства классов доступны через методы, то их скрывают в привату или протектед. Если ты хочешь изменить свойство константного класса, то поставь ему mutable (сам не пробовал, но попробуй, можешь потом результат рассказать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:33
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
Akh TubrikЧто я делаю не так? Как правильно поступить, чтобы остался const и получать значение через метод класса, и все работало? Если свойства классов доступны через методы, то их скрывают в привату или протектед. Если ты хочешь изменить свойство константного класса, то поставь ему mutable (сам не пробовал, но попробуй, можешь потом результат рассказать). Наверное меня не так поняли. Вопрос в том, почему не получается использовать строку Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:45
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
..или компилятор считает, что используемый метод исходного класса может изменить данные в нем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:53
|
|||
|---|---|---|---|
|
|||
Конструктор копирования (глупый вопрос) |
|||
|
#18+
int RetN() const {return n;} Нельзя вызывать неконстантные функции у констант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:53
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
Tubrik..или компилятор считает, что используемый метод исходного класса может изменить данные в нем? Метод должен быть константным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 17:55
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
все получилось) нужно было немного подумать) а не сразу на форум.. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2006, 19:22
|
|||
|---|---|---|---|
Конструктор копирования (глупый вопрос) |
|||
|
#18+
TubrikВ литературе рекомендуют параметр-ссылку переданную в конструктор копирования обозначать через const, чтобы не изменить исходный объект. Все получается, если обращаюсь к окрытым переменным исходного класса, но если доступ предоставляется через методы класса (а так чаще и бывает) то комп. выдает ошибку С++ - это не Smalltalk, в нем можно обращаться к приватным полям объекта, на который ссылается srcA (вообще можно иметь доступ к приватным членам любого объекта данного класса из методов данного класса). Поэтому вызывать аксессор вовсе не обязательно и даже вредно в смысле производительности, если он не реализованный inline конечно. Если ну очень хочется пользоваться аксессором (хотя это даже не принято можно сказать), объяви аксессор const . Собственно таким он и должен быть всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2030231]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 431ms |

| 0 / 0 |
