Как удалить эти дополнительные стрелки из моего вывода?

Это происходит потому, что вы применяете один объект m_execute к другому объекту.

Исправьте это, изменив эту строку

(m_b->*m_execute)();
//     ^^^^^^^^^
// Points to your m_execute, not m_b's

на это:

(m_b->*m_b->m_execute)();

Еще лучше добавить функцию-член для запуска собственного выполнения и вызвать его из B::find:

void find() {
    run_my_execute();
    m_b->run_my_execute();
}
void run_my_execute() {
    (this->*m_execute)();
}

Это позволило бы избежать путаницы, по которой указатель должен быть применен к какому объекту.

Демонстрация.

-2
задан Peter Wood 18 January 2019 в 23:14
поделиться

2 ответа

В верхней двойной петле, ...

  • Во-первых, c -loop не повторяется, когда r==0, и, таким образом, вы получаете двойные символы новой строки ↵↵.

  • Далее, вы получите еще один как раз перед c -циклом, когда r==1.

В нижнем двойном шлейфе ...

  • Наконец, c -loop не повторяется, когда r==0, и, таким образом, вы получаете двойные символы новой строки ↵↵.

Таким образом, вы должны заменить минимальное значение от r до 1 и избегать вывода символа новой строки при r==1 в нижнем двойном цикле следующим образом:

[ 1113] ДЕМО

#include <iostream>

int main() 
{
    for (int r = 1; r <= 10; ++r)
    {
        for (int c = 0; c < r; ++c)
        {
            std::cout << "+";
        }
        std::cout << std::endl << std::endl;
    }

    for (int r = 10; r > 0; --r)
    {
        for (int c = 0; c < r; ++c)
        {
            std::cout << "+";
        }

        if(r != 1){
            std::cout << std::endl << std::endl;
        }
    }

    return 0;
}
0
ответ дан Hiroki 18 January 2019 в 23:14
поделиться

Впервые мы вводим первый цикл r = 0 и для внутреннего цикла c=0. В этом случае условие внутреннего цикла не выполняется, поэтому первое состояние только из двух endl выполняется в начале и в конце внутреннего цикла. Для исправления необходимо поместить во второй цикл условие int c = 0; c <= r; c++. в этой ситуации вам нужно исправить условие первого цикла на int r=0; r<10; r++

вы можете увидеть это для диаграммы циклов: for_loop_diagram

исправленный код:

[110 ]
0
ответ дан mehdi 18 January 2019 в 23:14
поделиться
Другие вопросы по тегам:

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