Ссылка на нестатический член класса в статической функции

Так что у меня есть что-то вроде этого:

//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 а также статичный.

Другие вопросы по тегам