静态函数的问题在于它仅接受静态类变量和函数。解决方法是可能的。从C++中的静态方法访问非静态类变量
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);
}
}
每个功能1和功能2将创建自己的实例即队列,这意味着队列x是两者的功能不同。
我们怎样才能让两个函数都可以访问同一个队列,而不是使它变为静态的,请问有没有办法解决,请注意function1()和function2()在线程中并行运行。因此function1()是独立于function2()的,反之亦然。
为什么没有达到静态要求?或者,为什么'functdion1'和'function2'需要是静态的? – 2014-12-19 05:21:03
我不知道静态要求,但我被告知。函数1和函数2需要是静态的,因为它们是在单独的.h和.cpp实现中通过pthread_create函数传递的。 – Kamran 2014-12-19 05:32:38
除了被问及回答的实际问题之外,你真的不应该把'a = new A()'与'free(a)'混合在一起。如果你有新东西,请删除它。如果你'malloc()'有东西,'free()'它。 – etheranger 2014-12-19 05:34:40