可以说我有这样的功能:
void processElement() {
doSomething(someArray[lastProcessedElement + 1]);
}
Run Code Online (Sandbox Code Playgroud)
问题是,每次调用此函数时,我都需要存储我调用doSomething的最后一个元素.所以在这里我有两个选择:
我可以创建一个名为lastProcessedElement的私有类变量,并在每次调用该函数时递增它的值.这种方法似乎最常见.所以代码可以是这样的:
class Foo {
int lastProcessedElement = 0;
public:
void processElement() {
doSomething(someArray[++lastProcessedElement]);
}
}
Run Code Online (Sandbox Code Playgroud)作为第二个选项,我可以在函数中创建一个静态变量并每次递增它:
// Class is not important here, so the function is:
void processElement() {
static int lastProcessedElement = 0;
doSomething(someArray[++lastProcessedElement]);
}
Run Code Online (Sandbox Code Playgroud)第一个解决方案增加了一些我不想要的复杂性.我喜欢把东西放在原地.
我知道第二个解决方案只有在该类只有一个实例时才有效.
那么使用静态变量法是一个很好的解决方案?是否有多实例类的在线解决方案?(可以有一个解决这个特定的数组元素索引的东西,但我刚刚做了,我说的是为函数的下一次调用存储一些值)