是否为类的构造函数添加了一个伪参数来解决调用歧义,违反任何规则?

Poo*_*ria 3 c++ constructor initialization ambiguity named-constructor

采用以下类和两个对象定义:

class Rect{
 public:
  enum centimeter;
  enum meter;
  Rect(double len,double wid,enum centimeter){
   length=(len/100);
   width=(wid/100);
  }
  Rect(int len,int wid,enum meter){
   length=len;
   width=wid;
  }
  //rest of implementation
 private:
  double length;//in meters
  double width;//in meters
};
Rect obj1(10,5,Rect::centimeter());
Rect obj2(10,5,Rect::meter());
Run Code Online (Sandbox Code Playgroud)

两个先前的构造函数具有伪枚举参数,以解决在这些伪参数不存在的情况下引起的调用歧义.现在尽管有可能在这里使用命名构造函数,如果我坚持使用这些虚拟参数,这是否违反了我应该注意的任何编码规则?

Joh*_*itb 10

我认为这违反了我的口味.我会像这样编码:

enum Unit {
  Centimeter = 100, 
  Meter      = 1
};

Rect(int len, int wid, Unit unit) {
  length = len / (int) unit;
  width = wid / (int) unit;
}

Rect obj1(10, 5, Rect::Centimeter);
Rect obj2(10, 5, Rect::Meter);
Run Code Online (Sandbox Code Playgroud)