静态函数的问题是它只接受静态类变量和函数。可以采用解决方法。
Class A{
int x;
static void function()
{
A *a= new A();
a->x; //this way we can access the non-static functions
free(a);
}
}
但我们假设这个案例在队列中。
Class A{
queue x;
static void function1()
{
A *a= new A();
a->x.push(some argument); //this way we can access the non-static functions
free(a);
}
static void function2()
{
A *a= new A();
a->x.pop(); //this way we can access the non-static functions
free(a);
}
}
每个function1和function2将创建一个自己实例的队列,即a,意味着队列x对于这两个函数都是不同的。
我们怎样才能让这两个函数同时访问同一个队列而不使它成为静态,有没有解决方法,请注意function1()和function2()并行运行在线程中。因此,function1()有点独立于function2(),反之亦然。
答案 0 :(得分:1)
我认为你需要首先检查你的设计为什么需要这个。
顺便说一句,您可以将队列作为参数传递给函数。这将允许function1
和function2
访问相同的队列。但是,由于它们并行,您可能需要锁定机制。
但是在调用function1
/ function2
之前必须创建队列,他们不应该释放它。
static void function1(A *a)
{
a->x.push(some argument); //this way we can access the non-static functions
}
static void function2(A *a)
{
a->x.pop(); //this way we can access the non-static functions
}
我也认为这种方式不是一种解决方法,而是一种干净的解决方案。