Полезны ли члены класса const, когда оператор присваивания перегружен?

У меня есть класс с членом, который не изменяется методами класса, поэтому я пометил его как const . Моя проблема в том, что я использовал оператор присваивания по умолчанию, как конструктор копирования, чтобы избежать множественных объявлений. Но в этом случае оператор присваивания не генерируется автоматически, поэтому я получаю некоторые ошибки компилятора: Функция 'operator =' недоступна . Похоже, что в реальной жизни нет сценария, в котором можно было бы использовать члены класса const (например, видели ли вы какой-либо член const в коде STL?).

Есть ли способ исправить это, кроме удаления const ?

РЕДАКТИРОВАТЬ : некоторый код

class A
{
public :
   const int size;
   A(const char* str) : size(strlen(str)) {}
   A() : size(0) {}
};


A create(const char* param)
{
    return A(param);
}


void myMethod()
{
    A a;

    a = create("abcdef");
    // do something

    a = create("xyz");
    // do something
}
5
задан Andrei Bozantan 16 January 2012 в 09:10
поделиться