【发布时间】:2010-11-16 07:32:08
【问题描述】:
我有一个类,它有一些静态函数来执行一些计算。但是,在计算之前,我需要传入一个数据来初始化一些静态数据成员。目前我有一个 init(data) 函数和一个 clearResource() 函数,应该在使用类之前和之后调用它们。有更好的方法吗?
例如:
classA(){
static int a;
static init(int b) {
a = b;
}
static functionA(){
//perform something based on value of a;
switch(a){
}
}
}
int main(){
classA::init(5);
classA::functionA();
}
谢谢
【问题讨论】:
-
静态函数如何依赖于您的对象状态?
-
不清楚您是想对类的每个对象使用
init和clearResource,还是对所有对象只使用一次。 -
好吧,如果你有一个依赖于状态的函数,那么你应该将
wrap the state and the function放入它自己的类中,该类封装了所有这些信息。然后这个新类的构造函数/析构函数会自动处理以上所有。 -
你真的应该重新审视你的设计。请注意,只有描述清楚地表明您的程序永远不会支持多线程(必须在使用
functionA的每个线程中修改静态变量,无论是在进入之前还是在完成之后。如果第二个线程尝试调用该函数,而第一个线程在里面,它会在操作过程中改变global。 -
感谢@David 的回复:您能详细说明一下多线程部分吗?我不太明白。我不需要修改 int a 的值,它只需要在程序开始时初始化一次。那还会带来问题吗?谢谢。
标签: c++