| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как сделать ссыслку read only |
| Автор: astranom 8.10.2004, 11:39 |
| Есть два класса Class1 и Class2, одним из элементов Class2 является ссылка на объект Class1. class Class1 { public: int i; }; class Class2 { public: Class2 *ref; Class2() { ref=new Class1; }; }; Как сделать эту ссыслу не доступной для изменения и при этом иметь возможность быстро ссылаться на эелементы объектов? Если описать ref как protected, то нельзя будет использовать такую запись Class2 cl2; int k = cl2.ref->i; а делать метод GetRef и всегда использовать дополнительную переменную кажется довольно неудобно Class2 cl2; Class1 *temp; temp=cl2.GetRef(); int k = temp->i; Перегрузить оператор = для ссылок на объекты типа Class1 нельзя, потому что в других частях программы тоже такие ссылки и там = должно работать. |
| Автор: Vyacheslav 8.10.2004, 11:52 | ||
|
| Автор: astranom 8.10.2004, 12:11 |
| Не совсем подходит в Class2 есть функции члены, которые содержат подобный код: void Class2::fn1(void) { .... delete ref; .... ref = new class1; .... }; |
| Автор: Vyacheslav 8.10.2004, 13:23 | ||
И что?
Ну а вообще то это неправильно. В таких случаях лучше использовать геттеры |
| Автор: astranom 8.10.2004, 13:40 |
| Спасибо всем за помощь. Кажется я нашел нормальное решение, оказывается допустима такая запись: Class2 cl2; int k=cl2.GetRef()->i; Правда при этом автокомлит не работает, по крайне мере в Билдере. |