- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
#include <iostream>
#include <boost/noncopyable.hpp>
#include <assert.h>
using namespace std;
class noncopyable
{
protected:
noncopyable() {}
virtual ~noncopyable() {}
private: // emphasize the following members are private
noncopyable( const noncopyable& );
virtual const noncopyable& operator=( const noncopyable& )final = delete;
};
class T: public noncopyable
{
public:
const T& operator=( const T& ){return *this;}
};
int main() {
T a;
a=T();
std::cout<<"kokoko"<<std::endl;
return 0;
}
HaskellGovno 20.08.2012 12:45 # −1
HaskellGovno 20.08.2012 12:49 # −1
Так тоже не заработает, что в общемто логично. Я сдаюсь.
Как надежно запретить оператор копирования? С конструктором все просто. Запретил и все, а тут никак...
HaskellGovno 20.08.2012 12:52 # −1
Я вообще мудак и по лоховски ошибся, но все равно не работает. Надоело помечать ссылки. вручную. Напишите мне скрипт или пусть страйко все фичи, что недавно запилил, отремонтирует. У меня все сломалось.
defecate-plusplus 20.08.2012 12:53 # 0
ну а boost::noncopyable нужен не для того, чтобы кому то в иерархии запретить его доопределить, а для того, чтоб гадкий компилятор не создал его по умолчанию (и, тем более, не ругался на свои же ошибки в своем тривиальном присваивании)
HaskellGovno 20.08.2012 12:58 # −1
Вот так новости... А запретить до определять в потомке видимо никак? КРЕСТОПРОБЛЕМЫ
defecate-plusplus 20.08.2012 13:20 # 0
я не спроста обратил внимание на виртуальное присваивание
сравни свой оригинал пост с вот таким вариантом
http://liveworkspace.org/code/993caff120b93f79ced1795f14e4d4ba
HaskellGovno 20.08.2012 13:21 # −1
Ты вот лучше скажи, как operator= перегружать запретить в потомке?
defecate-plusplus 20.08.2012 13:27 # +2
можешь попытаться запретить наследоваться от себя (final class в С++11)
это академический интерес или такая идейная рахитектура, запретить потомку всё что можно?
HaskellGovno 20.08.2012 15:14 # 0
defecate-plusplus 20.08.2012 15:19 # 0
это абсолютно дело потомка будет ли он копироваться сам от себя или не будет, ему это дело виднее - ты ведь разрешил наследоваться, завещание написал - давай до свидания
HaskellGovno 20.08.2012 15:25 # 0
sayidandrtfm 20.08.2012 16:05 # 0
defecate-plusplus 20.08.2012 16:21 # 0
sayidandrtfm 20.08.2012 16:29 # 0
defecate-plusplus 20.08.2012 16:31 # +2
sayidandrtfm 20.08.2012 16:48 # 0
C++ - уровень доступа к членам в производном классе в любую сторону.
Java - только в сторону повышения уровня доступа.
sayidandrtfm 20.08.2012 14:57 # 0
В каком стандарте ждать тебя?
HaskellGovno 20.08.2012 15:14 # −1