3

有没有办法强制类的用户根据构造函数const使用的数据构造对象?

例如,考虑一个围绕某个缓冲区的小型包装类,它可以是const或非const

class Wrapper {
  public:
    Wrapper(const char*);
    Wrapper(char*);
}; 

现在,如果用户提供 a 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);

有任何想法吗?

4

1 回答 1

3

您不能在构造函数中执行此操作,但您可以创建一个返回 const 对象引用或指针的工厂。但是,您将需要禁用复制和复制构造,并且可能不会提供任何值。

于 2013-04-18T17:01:48.543 回答