静态函数的问题是它只接受静态类变量和函数。解决方法是可能的。
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(),反之亦然。
最佳答案
我认为您需要首先检查您的设计,为什么需要这个。
顺便说一句,您可以将队列作为参数传递给函数。这将允许 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
}
我还认为这种方法不是解决方法,而是一种干净的解决方案。
关于c++ - 从 C++ 中的静态方法访问非静态类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560121/