, так что я получил что-то вроде этого:Реферирование члена нестатического класса в статической функции
//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 как статический также являюсь или там лучший способ?
Статические методы не являются экземплярами (т. Е. Не подразумевается «этот» указатель), поэтому вызов метода экземпляра из статического метода невозможен. Вы можете передать указатель или ссылку на свой класс в качестве параметра на свой статический метод и вызвать нестатические методы с помощью этого параметра. – franji1
@ franji1: Очень распространенное заблуждение - методы экземпляров, безусловно, могут быть вызваны с помощью функции-члена 'static', используя оператор доступа' .' к объекту. –
Предлагаемый дубликат неверен, потому что этот вопрос с названием заголовка вводит в заблуждение. Голосование за повторное открытие. – RandomSeed