отключение к-торов по умолчанию
От: Иванков Дмитрий Россия  
Дата: 21.02.06 09:01
Оценка:
Есть ли стандартные способы управления созданием default constructor, copy constructor, copy assignment operator?
Или хотя бы объявление их приватными.

Чтобы "убрать" конструктор по умолчанию подходит такой класс
struct noDefaultCtor
{
    protected:
    noDefaultCtor(){};
};

Вроде не к чему придраться =)

Для отключения оператора присваивания подходит такой базовый ькласс
struct noCopy
{
    static char _;
    char& __;
    noCopy() : __(noCopy::_) {};    
};
char noCopy::_ = '_';

Но жаль 4 байта

А вот с конструктором копирования не получается, такой класс не работает
struct noCopyCtor
{
    noCopyCtor(){}
    private:
    noCopyCtor(const noCopyCtor& t){};
};


Использование предполагается такое:
struct A : noCopyCtor, noDefaultCtor
{
 ...
};


Есть ли другие варианты по оператору присваивания и хоть какие-нибудь по конструктору копирования?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.