Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

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

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

Как запретить присваивание по возвращённой из функции ссылке? - 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++
Собственно тут если вводятся буквы, то программа творит что то страшное... Да и через пробел вытворяет что то неадекватное. Нельзя ли их...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.06.2012, 16:21  [ТС]     Как запретить присваивание? #16
Цитата Сообщение от Toshkarik Посмотреть сообщение
Bers, Так ошибка и должна быть на этапе компиляции. Я думаю Тарас этого и хотел;
Пока объекты не присваиваются, сам класс гну должна хавать без проблем.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.06.2012, 16:21     Как запретить присваивание? #17
А ну я ж не знал какая у Вас именно ошибка Вот такой эффект я думаю должен быть.
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;
}
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.06.2012, 16:23     Как запретить присваивание? #19
Я не пойму, Вам нужно сделать так, что бы ошибка была во время выполнения программы?
Bers
Заблокирован
11.06.2012, 16:30     Как запретить присваивание? #20
Цитата Сообщение от taras atavin Посмотреть сообщение
Меня беспокоит дефолтная версия с побайтным копированием.
Если ты объявил, но не определил, то никаких дефолтных версий компиль уже не создаст
Если ты использовал структуру аля NoEqually, то компиль в принципе сконструировать дефолтный оператор= уже не сможет.
При попытке такой оператор задействовать, будет ошибка времени компиляции
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.06.2012, 16:31     Как запретить присваивание? #21
Цитата Сообщение от Bers Посмотреть сообщение
По-моему, оно вообще не компилируется. М?
Вы спросили - "Из нового стандарта", я сказал "Да". Проблемы не вижу
Пруф http://liveworkspace.org/code/75dc48...c0b9d6be11021c
И http://en.wikipedia.org/wiki/C%2B%2B...mber_functions
Bers
Заблокирован
11.06.2012, 16:44     Как запретить присваивание? #22
Цитата Сообщение от soon Посмотреть сообщение
Вы спросили - "Из нового стандарта", я сказал "Да". Проблемы не вижу
Просто я не видел вашего ответа на момент той мессаги. А сам по себе новый стандарт плохо знаю. Поэтому вот, уточняю моменты)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2012, 16:46     Как запретить присваивание?
Еще ссылки по теме:

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

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

Как в программе запретить ввод символов и букв! - C++
Всем доброго времени) Только вот начал изучать С++. Ребят, если не сложно помогите прописать в мой программе запрет ввода букв и...

Как запретить выполнение функции до её вызова в main? - C++
Подскажите: как запретить выполнение функции vvod до её вызова в main? #include <iostream> #include <string> using namespace std; ...

Как запретить преобразование типов при использовании cin - C++
Как запретить преобразование типов при использовании объекта потокового ввода cin. Проблема в том, что существует переменная типа int и со...


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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.06.2012, 16:46  [ТС]     Как запретить присваивание? #23
Цитата Сообщение от Bers Посмотреть сообщение
Уверен?
По-твоему я на столько не знаю декларацию своего класса? Там всего один член-данное, он изменяемый и других быть не должно.

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Если ты использовал структуру аля NoEqually,
что это?
Yandex
Объявления
11.06.2012, 16:46     Как запретить присваивание?
Ответ Создать тему
Опции темы

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