C ++
Как вывести ошибку, когда кто-то вызывает оператор присваивания?
У меня есть базовый класс, который использует фабричный метод вместо конструктора. Методы фабрики считывают файл и вызывают конструктор производного класса на основе содержимого файла.
Base *a::create(file1);
Base *b::create(file2);
Я хочу выдать ошибку, если кто-то вызывает оператор присваивания.
*a = *b; // filetype contents don't match
В этот момент, когда вышеприведенное выполнено, содержимое моего * a перезаписывается * b. Я предполагаю, что он вызывает неявный оператор присваивания, чего я и не хочу.
Когда я объявляю оператор присваивания закрытым. Я получаю следующие ошибки, когда запускаю его в отдельном тестовом файле.
test.cc:34:13: fatal error: 'operator=' is a private member of 'Test'
*aa = *ad;
~~~ ^ ~~~
./Base.h:14:16: note: declared private here
Base& operator=(const Base &rhs);
^
1 error generated.
make: *** [test] Error 1
Я бы хотел, чтобы вместо того, что показано выше, я выдал ошибку. Как «ты не можешь сделать это» или что-то.
Любая помощь будет оценена.