如何防止从char到int的隐式转换?

时间:2013-11-15 21:31:16

标签: c++

我有以下代码:

#include <iostream>

template<typename T> class DynArray 
{ 
  T *contents; 
  int size; 
public: 
  explicit DynArray(int initial_size); 
}; 

int main() 
{ 

  DynArray<std::string> b('7'); 

  return 0; 
}

我的问题是:如何防止从编译到char的隐式转换? (即这一行:`DynArray b('7');

1 个答案:

答案 0 :(得分:6)

你不能直接,但是你可以重新构造一个在传递char时首先被选中的构造函数...

explicit DynArray(char);

将其设为私有,不要定义它,只需声明它。与声明但未定义复制ctor / copy赋值运算符以防止类可复制相同。

或者,使用C ++ 11,将其删除(这是更清洁/更清晰/更好的方法)......

explicit DynArray(char) = delete;