當我說「屬性」時,我的意思是沿着std:array<int, 5> arr
的方向。 5
是該數組的一個屬性。我可以在C++中創建「屬性」類型嗎?
這是一個激勵性的例子:假設我想創建一個包含格式信息的數字或字符串。所以我可能希望能寫Double<7,2> foo
,這意味着我希望foo是一個double,當我打印它時,它的寬度爲7,精度爲2.我可以按照常規方式進行分配:
foo = 42;
double bar = foo;
有沒有辦法做到這一點?
你可能會問爲什麼我想這樣做。爲什麼不,例如,定義一個在構造函數中使用寬度和精度的類?答案是我認爲你不能在結構中使用它們。舉例來說,我希望能夠做一些事情,如:
struct Account {
std::string description;
Double<7, 2> amount;
Double<7, 2> balance;
Double<9, 3> percent;
};
你問[非類型模板參數(http://en.cppreference.com/w/cpp/language/template_parameters#Non-type_template_parameter)? –
'5'是*模板參數*。這個概念已經有了一個名字:-) –
'template struct Double {};',這是一個賦值的重載,適當的轉換運算符將允許你以你擁有的方式使用'Double'這個問題。 –
Bathsheba