static std::condition_variable undefined reference

113
19 октября 2019, 22:10
class Test  
{
 public:
    Test();
    static std::condition_variable condVar;
    void notifyCv(); // тут делаем condVar.notify_all()
}

при попытке использовать такую переменную - выдает undefined reference.

void main()
{
    std::mutex mut;
    std::unique_lock<std::mutex> lock(mut);
    while (true) {
        Test::condVar.wait(lock);
        //далаем чтото полезное
    }
}

Дело в том, что создается много экземпляров класса Test, и в этих экземплярах происходит событие, которого нужно постоянно ожидать. А реагировать нужно, если произошло событие в ЛЮБОМ экземпляре.

Если объявлять condVar, не как static, то у каждого экземпляра будет по своему condVar и как тогда ожидать событие от любого из экземпляров, не перебирая их все постоянно в цикле?

upd: да, вопрос похож на дубликат.. то, что static переменную нужно определить - я знаю. Но не пойму, как это сделать с condition_variable..

Answer 1

проблема решилась с помощью комментария @KoVadim.

вне объявления класса добавить:

std::condition_variable Test::condVar;
READ ALSO
синтаксическая ошибка: идентификатор &ldquo;BurgerMaker&rdquo;, DrinkMaker, PotatoMaker, в месте добавления

синтаксическая ошибка: идентификатор “BurgerMaker”, DrinkMaker, PotatoMaker, в месте добавления

Внутри класса Cashier удалите тело функции _to_order, оставив только

98
c++: запись файла в несуществующую папку

c++: запись файла в несуществующую папку

Подскажите пожалуйста наилучший способ как записать файл в некоторую папку folder1\folder2\

137
sh: 1: Syntax error: word unexpected (expecting &ldquo;)&rdquo;)

sh: 1: Syntax error: word unexpected (expecting “)”)

Программа должна получать на вход координаты из командной строки по образцу (x;y) , вроде бы все норм , но выдает ошибкуБыл бы благодарен, если...

119
Qt отображение корневого элемента дерева

Qt отображение корневого элемента дерева

Хочу создать свою модель дерева, получается вот такое:

121