小编Rak*_*rai的帖子

允许单个值的隐式转换

我有一个Flags类似于std::bitset替换旧代码库中的bitpacked整数的类.为了强制遵守较新的类,我想禁止从int类型中隐式转换.

enum class Flag : unsigned int {
  none = 0,
  A = 1,
  B = 2,
  C = 4,
  //...
};

class Flags {
public:
  Flags();
  Flags(const Flag& f);
  explicit Flags(unsigned int); // don't allow implicit
  Flags(const Flags&);

private:
  unsigned int value;
};
Run Code Online (Sandbox Code Playgroud)

我想只允许从FlagFlags类型隐式构造和赋值.但是,我仍然希望一些函数调用Flags接受一个文字0,但不接受其他整数:

void foo(const Flags& f);

foo(Flags(0)); // ok but ugly
foo(1); // illegal because of explicit constructor
foo(0); // illegal, but I …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
136
查看次数

将C++ char数组自动转换为字符串

假设我有一个可以使用char数组指针构造的String类.是否有任何疯狂的方式,通过一些神奇的运算符重载,自由函数或预处理器宏来使类似Python的语法工作,自动将一个char数组文字自动转换为String?要进行此编译:

String a = "Foo".substr(1);
Run Code Online (Sandbox Code Playgroud)

我想一个疯狂的预编译sed语句可以做到这一点,但clang的能力范围内的东西将是首选.

c++

0
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×2