Получение возвращаемого значения от повышения:: потоковая функция членства?

Anders дает хорошую сводку, и здесь является примером аннотации JUnit

@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

Здесь @Test, аннотация говорит JUnit, что flatfileMissing метод является тестом, который должен быть выполнен и что ожидаемым результатом является брошенный IOException. Таким образом, когда Вы запускаете свои тесты, этот метод назовут, и тест передаст или перестанет работать на основе того, брошен ли IOException.

7
задан He Shiming 11 November 2009 в 05:14
поделиться

2 ответа

Я не думаю, что вы можете получить возвращаемое значение.

Вместо этого вы можете сохранить значение как член Worker:

class Worker{
public:
  void Do(){
    int ret = 100;
    // do stuff
    m_ReturnValue = ret;
  }
  int m_ReturnValue;
}

И использовать его так:

Worker worker;
boost::function<void()> th_func = boost::bind(&Worker::Do, &worker);
boost::thread th(th_func);
th.join();
//do something with worker.m_ReturnValue
7
ответ дан 6 December 2019 в 08:43
поделиться

Кроме того, у вас также есть несколько избыточных вызовов для boost :: bind () и boost :: function (). Вместо этого вы можете сделать следующее:

class Worker{
    public:
       void operator(){
          int ret = 100;
          // do stuff
          m_ReturnValue = ret;
       }
    int m_ReturnValue;
}

Worker worker;
boost::thread th(worker());//or boost::thread th(boost::ref(worker));

Вы можете сделать это, потому что конструктор Thread является удобной оболочкой для внутреннего вызова bind (). Конструктор потоков с аргументами

2
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

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