С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
#1

Как запретить присваивание? - C++

11.06.2012, 15:42. Просмотров 1154. Ответов 22
Метки нет (Все метки)

Как лучше запретить присваивание? Заприватить оператор и не делать его реализацию? Или как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2012, 15:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как запретить присваивание? (C++):

Как запретить присваивание по возвращённой из функции ссылке? - C++
Вопрос вот в чём. Есть класс с вложенным объектом (допустим контейнер, но не обязательно): class Class { vector<int> _array;...

Запретить присваивание указателей - C++
Доброго! Подскажите пожалуйста, можно ли запретить присваивание указателей? class A { //bla-bla-bla... }; class B { ...

Как в двусвязном списке сделать перегрузку оператора присваивание - C++
Добрый день. Мне нужно перегрузить оператор =, так чтобы один объект класса "Двусвязный список" присваивался другом объекту. class...

Как запретить консоли закрываться? - C++
Здравствуйте. Код: #include <iostream> #include <conio.h> using namespace std; int main() { int x;

Как запретить закрытие консоли? - C++
Как запретить закрытие консоли? Подсказали, что для этого нужно использовать функцию SetConsoleCtrlHandler(). Но у меня не получается...

Как запретить ввод определенных символов? - C++
здраствуте, как можно запретить ввод определенных символов в "int main" (да и в целом) ? допустим, я сделал калькулятор и мне нужно,...

22
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
11.06.2012, 16:21  [ТС] #16
Цитата Сообщение от Toshkarik Посмотреть сообщение
Bers, Так ошибка и должна быть на этапе компиляции. Я думаю Тарас этого и хотел;
Пока объекты не присваиваются, сам класс гну должна хавать без проблем.
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.06.2012, 16:21 #17
А ну я ж не знал какая у Вас именно ошибка Вот такой эффект я думаю должен быть.
0
Bers
Заблокирован
11.06.2012, 16:23 #18
Цитата Сообщение от taras atavin Посмотреть сообщение
Не пойдёт.
Уверен?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct NoEqually
{
    NoEqually(const int val): mConst(val){}
    const int mConst;
};
 
struct Foo: public NoEqually
{
    Foo():NoEqually(0){}
};
 
int main()
{
    Foo f;
 
    f = Foo(); //: error C2582: функция 'operator =' недоступна в 'Foo'
    
    return 0;
}
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.06.2012, 16:23 #19
Я не пойму, Вам нужно сделать так, что бы ошибка была во время выполнения программы?
0
Bers
Заблокирован
11.06.2012, 16:30 #20
Цитата Сообщение от taras atavin Посмотреть сообщение
Меня беспокоит дефолтная версия с побайтным копированием.
Если ты объявил, но не определил, то никаких дефолтных версий компиль уже не создаст
Если ты использовал структуру аля NoEqually, то компиль в принципе сконструировать дефолтный оператор= уже не сможет.
При попытке такой оператор задействовать, будет ошибка времени компиляции
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.06.2012, 16:31 #21
Цитата Сообщение от Bers Посмотреть сообщение
По-моему, оно вообще не компилируется. М?
Вы спросили - "Из нового стандарта", я сказал "Да". Проблемы не вижу
Пруф http://liveworkspace.org/code/75dc4816dcf857bfc3c0b9d6be11021c
И http://en.wikipedia.org/wiki/C%2B%2B...mber_functions
0
Bers
Заблокирован
11.06.2012, 16:44 #22
Цитата Сообщение от soon Посмотреть сообщение
Вы спросили - "Из нового стандарта", я сказал "Да". Проблемы не вижу
Просто я не видел вашего ответа на момент той мессаги. А сам по себе новый стандарт плохо знаю. Поэтому вот, уточняю моменты)
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
11.06.2012, 16:46  [ТС] #23
Цитата Сообщение от Bers Посмотреть сообщение
Уверен?
По-твоему я на столько не знаю декларацию своего класса? Там всего один член-данное, он изменяемый и других быть не должно.

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Если ты использовал структуру аля NoEqually,
что это?
0
11.06.2012, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2012, 16:46
Привет! Вот еще темы с ответами:

Как запретить/разрешить скролирование в DBGrid? - C++
После сохранения данных в строке DBGrid я делаю проверку по всей таблице(перебор с первой до последней записи). Во время проверки ...

Как лучше запретить копирование объекта? - C++
Есть класс, надо запретить копирование его экземпляров. Можно как то сделать, чтоб в интерфейсе класса вообще не было конструктора копии и...

Как запретить вызов конструктора 2-ой раз - C++
Как можно сделать чтобы конструктор не вызывался 2-раз #include <iostream> #include "Model.h" int main() ...

Как запретить ввод пробела и букв? - C++
Собственно тут если вводятся буквы, то программа творит что то страшное... Да и через пробел вытворяет что то неадекватное. Нельзя ли их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.