【发布时间】:2013-06-11 01:29:36
【问题描述】:
所以我有这样的东西:
//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 中使用的所有内容也声明为静态的,还是有更好的方法?
【问题讨论】:
-
静态方法是非实例方法(即没有隐含的“this”指针),因此无法从静态方法中调用实例方法。您可以将指向您的类的指针或引用作为参数传递给您的静态方法,并通过该参数调用非静态方法。
-
@franji1:一个非常常见的误解——实例方法当然可以从
static成员函数调用,方法是在对象上使用.成员访问运算符。 -
建议的副本不正确,因为当前的标题问题具有误导性。投票重新开放。