在静态函数中引用非静态类成员

时间:2013-06-11 01:29:37

标签: c++ static member

所以我有这样的事情:

//somewhere in the class header 
static void bar(); 
Someobj baz;


//meanwhile in the implementation
void foo::bar()
{
   baz.f()//this doesn't work b/c baz isn't declared as static
} 

我是否必须将我想在静态函数foo中使用的所有内容声明为静态,还是有更好的方法?

2 个答案:

答案 0 :(得分:0)

是的,你这样做。如果您有10个对象并且每个对象都有自己的baz,那么bar应该如何知道您正在谈论哪个baz

它不能。这就是为什么你只能有一个baz,一个静态的。

答案 1 :(得分:0)

静态函数类似于全局函数,没有与它们关联的实例,因此您无法引用实例成员。如果您需要与此类关联的单个baz对象,请将其设置为静态。否则,你需要改变你的逻辑。