是否有一种方法可以强制类的用户基于构造函数使用的数据来构造const
对象?
例如,考虑一个围绕缓冲区的小包装器类,它可以是const
或非const
class Wrapper {
public:
Wrapper(const char*);
Wrapper(char*);
};
现在,如果用户提供了一个const
,我可以强制他们在编译时将对象声明为const
吗?这是
// you have to do this if the input is const
const char* a;
// this will not compile
Wrapper w(a);
// but this will
const Wrapper(a);
任何想法?
不能在构造函数中这样做,但可以创建一个返回const对象(ref或指针)的工厂。但是,您需要禁用复制和复制构造,并且可能不提供任何值。