0

前任。我有一个函数可以更改没有参数并使用全局结构的像素数据(红色、绿色、蓝色)glob。我可以glob.data读取红色、绿色、蓝色像素。

有什么不同的是,如果我要包含一个参数,那就是 a glob*,我可以从指针访问数据。

这是更好的做法,然后使用任何功能的全局?

这个实现会比调用'glob.width = 2'等更好

RevolverFilter(&global, &temp);
void RevolverFilter(glob* org,glob* temp1){ 
for x: for y: tRed = org->data[x+y*w].r;
    ...
}
4

2 回答 2

3

“这是更好的做法,然后使用任何功能的全局?”

使用全局变量作为将参数传递给函数的替代方法绝对不是一个好习惯。

如果要创建一个处理(修改)像素的函数,则定义一个处理像素的函数

void processPixel(Pixel& p) {
    ...
}
于 2013-10-09T18:26:11.660 回答
0

将数据和功能封装到对象中是面向对象设计的基础。因此,使用全局变量将值传递给函数不是“好的”OOD 实践,即使对于非 OOD 设计,在 C 等结构语言中通常也不是一个好的实践,因为它不利于代码组件的模块化,并在代码中创建“隐藏”依赖项。如果您绝对需要某种类似“全局”的功能,您可以在类中声明一个静态成员,使该成员独一无二,同时将其封装到一个组件(一个类)中。

于 2013-10-09T19:20:56.447 回答