Я получаю эту ошибку в файле C ++, где я пишу несколько тестов:
error: no member named 'Session' in namespace 'Catch'
testResult = Catch::Session().run(test_argc, test_argv);
~~~~~~~^
Глядя на файл заголовка catch.hpp, я заметил, что код, который должен реализовывать функцию-член Session (), выделен серым цветом, возможно, из-за где-то #ifdef, который я не могу найти.
Есть ли макрос для использования в классе Session?
Версии Catch: 1.5.3 и 1.5.6.
Ссылка: https://github.com/philsquared/Catch/blob/master/docs/own-main.md
Вы пытаетесь вызвать конструктор Catch::Session
из файла, где вы не определяете свой собственный main
выполнить. Согласно документация по определению собственного основного, должен быть только один случай Catch::Session
:
Catch::Session session; // There must be exactly once instance
Скорее всего Catch мешает строительству Catch::Session
в единицах перевода, где это не может быть использовано в обычае main
определение (поскольку именно там оно и должно использоваться), чтобы предотвратить именно ту ошибку, которую вы допустили при компиляции.
Других решений пока нет …