我有一个类没有被类的方法改变,所以我把它标记为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