所以我有这样的事情:
//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中使用的所有内容声明为静态,还是有更好的方法?
答案 0 :(得分:0)
是的,你这样做。如果您有10个对象并且每个对象都有自己的baz
,那么bar
应该如何知道您正在谈论哪个baz
?
它不能。这就是为什么你只能有一个baz
,一个静态的。
答案 1 :(得分:0)
静态函数类似于全局函数,没有与它们关联的实例,因此您无法引用实例成员。如果您需要与此类关联的单个baz对象,请将其设置为静态。否则,你需要改变你的逻辑。