3

我试图让这个 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,但必须先声明它们。其他一些变量也是如此。我只想将它们作为两个整数组发送到参数中,我想知道是否有解决方法。最重要的是,它只是为了让它紧凑而简单。

4

1 回答 1

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));
于 2013-09-10T12:15:13.070 回答