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

start [/forum/topic.php?fid=57&fpage=328&tid=2030231]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 299ms |

| 0 / 0 |
