採取以下級和兩個對象定義:確實會向類的構造函數中添加一個虛擬參數來解決調用歧義,違反任何規則?
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());
前兩個構造具有虛擬枚舉參數來調用解決造成這些僞參數是不存在的情況下,模糊性。儘管可能在這裏使用命名構造函數,但如果我堅持使用這些虛擬參數,是否違反了我應該注意的任何編碼規則?
IMO,更簡潔的方法是將類的整個接口定義爲一個單元(即長度爲米),並要求該類的用戶自己進行轉換。 – 2010-07-17 18:55:50
在構造函數體中設置成員(它們應該在* ctor-initializer-list *中初始化)是一個比額外參數更大的問題。 – 2010-07-17 21:01:21