Ссылка на нестатический член класса в статической функции
Так что у меня есть что-то вроде этого:
//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 ответа
Статические функции похожи на глобальные функции, с ними нет ассоциированного экземпляра, поэтому вы не можете ссылаться на член экземпляра. Если вам нужен один объект baz, связанный с этим классом, сделайте его статичным. В противном случае вам нужно изменить свою логику.
Да, вы делаете. Если у вас есть 10 объектов, и каждый из них имеет свои baz
тогда как bar
должен знать, какой baz
ты говоришь о?
Не может Вот почему вы можете иметь только один baz
а также статичный.