Вызов метода из другого метода в том же классе в C++

Хотя Ansible может работать в Cygwin, обратите внимание, что он официально не поддерживается, и похоже, что это будет в ближайшем будущем.

Примечание. Бег с управляющей машины Windows НЕ является целью проекта. Не обращайте внимания на эту функцию, поскольку она ограничивает, какие технологии, функции и код мы можем использовать в основном проекте в будущем. Для управления хостами Windows потребуется компьютер управления Linux.

Cygwin не поддерживается, поэтому, пожалуйста, не задавайте вопросов о Ansible running from Cygwin.

blockquote>

Ansible Documentation

В качестве альтернативы рассмотрим запуск виртуальной машины Linux на вашем хосте Windows и использование этого в качестве вашего контроллера Ansible.

31
задан sth 11 June 2009 в 20:18
поделиться

5 ответов

Это именно то, что вы делаете.

23
ответ дан ralphtheninja 11 October 2019 в 11:25
поделиться

То, что вы там написали, должно работать нормально. В C ++, если вы вызываете a в b и оба являются методами экземпляра некоторого класса A, вам не нужно его квалифицировать. Оба a и b находятся в области действия друг друга.

2
ответ дан Todd Gamblin 11 October 2019 в 11:25
поделиться

В одном случае у вас могут быть немного неожиданные результаты. То есть, если A::a() является виртуальным, obj действительно имеет тип DerivedFromA, а DerivedFromA :: a переопределяет A::a. В этом случае простой вызов a(); или более подробный this->a(); будет вызывать не A :: a, а DerivedFromA :: a ().

Теперь, это, вероятно, предназначено, так как класс A объявил a () как виртуальный. Но если вы действительно не имеете это в виду, вы можете игнорировать виртуальное, записав вызов либо как

void A::b()
{
    A::a(); // or
    this->A::a(); //Both ignore the virtual-ness of a()
}    
2
ответ дан MSalters 11 October 2019 в 11:25
поделиться

То, что у тебя есть, должно работать нормально. Вы можете использовать «this», если хотите:

void A::b() {
  this->a();
  do_stuff;
}

или

void A::b() {
  this->A::a();
  do_stuff;
}

или

void A::b() {
  A::a();
  do_stuff;
}

, но то, что у вас должно работать, также: ]

void A::b() {
  a();
  do_stuff;
}
41
ответ дан Eclipse 11 October 2019 в 11:25
поделиться

Похоже, код, который вы написали в своем блоке, будет работать нормально. Просто убедитесь, что в вашем классе правильно определены методы a () и b ().

4
ответ дан 27 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: