我有一個類沒有被類的方法改變,所以我把它標記爲const
。我的問題是,我正在使用默認賦值運算符就像複製構造函數,以避免多個聲明。但在這種情況下,賦值運算符不會自動生成,所以我得到一些編譯器錯誤: 'operator =' function is unavailable
。這看起來似乎沒有真正的生活場景,其中可以實際使用const類成員(例如,你是否看到過STL代碼中的任何const成員?)。當賦值運算符重載時,const類成員是否有用?
有沒有什麼辦法解決這個問題,除去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
}
我將標題編輯爲一些我認爲更貼近你的意思的東西,並且會鼓勵更多有用的答案。如果您不同意,請隨時將其改回。 – Crashworks 2012-01-16 07:46:22
@Crashworks謝謝! – 2012-01-16 07:53:35