【发布时间】:2012-02-11 05:09:35
【问题描述】:
我有一个类的成员没有被类的方法改变,所以我将它标记为const。我的问题是我像复制构造函数一样使用默认赋值运算符,以避免多次声明。但是在这种情况下,赋值运算符不会自动生成,所以我得到了一些编译器错误:
'operator =' function is unavailable。这似乎在现实生活中没有可以实际使用 const 类成员的场景(例如,您在 STL 代码中见过任何 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
}
【问题讨论】:
-
我将标题编辑为我认为更贴切地描述了您要问的内容,并鼓励提供更有用的答案。如果您不同意,请随时更改。
标签: c++