强制用户声明对象const



是否有一种方法可以强制类的用户基于构造函数使用的数据来构造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或指针)的工厂。但是,您需要禁用复制和复制构造,并且可能不提供任何值。

最新更新