我试图让这个C ++代码更抽象,更容易看到和理解,并占用更少的空间。它是一个函数,它为一个大小和一个位置取一个字符串和两个整数。
HWND CreateButon(string Title, const int[2] Size, const int[2] Position) {
// Create the control, assign title, size and position
// Return HWND
}
HWND MyButton = CreateButton("Button1", [100, 20], [10, 10]);
我知道最后一个是错的。我只是这样写,所以你可以看到我的意思。我想直接发送大小和位置值作为参数。我可以使用structs
,但必须先申报。与其他一些变量相同。我只想将它们作为两个整数的组发送给参数,我想知道是否有一个解决方法。最重要的是它只是为了让它紧凑而简单。
答案 0 :(得分:7)
您可以传递一对而不是数组:
HWND CreateButton(string Title, std::pair<int,int> Size, std::pair<int,int> Position);
CreateButton("Button1", {100, 20}, {10,10}); // C++11
CreateButton("Button1", std::make_pair(100,20), std::make_pair(10,10)); // C++03
或者,仅在C ++ 11中,您可以传递std::array<int,2>
。这需要稍微陌生的聚合初始化{{100, 20}}
,但意味着您不会失去使用[]
对其进行索引的能力。
就个人而言,我可能更喜欢定义你描述的结构;这将提供更多的类型安全和自我记录,我倾向于重视而不是紧凑。事实上,我甚至可能会给它们一个explicit
构造函数(而不是允许列表初始化),所以你必须使用“命名参数”:
CreateButton("Button1", Size(100,20), Position(10,10));