Я пытался реализовать threadsafe_stack в главе 3 «Параллелизм в действии» на C++, и когда я попытался использовать его в main.cpp с двумя потоками, я получил сообщение об ошибке: неопределенная ссылка на `vtable для пустого_стака', это произошло, когда я попытался использовать функцию-член pop(). Я не понимаю почему, может кто-нибудь помочь?
Вот коды
Threadsafe_stack.h
#include
#include
#include
#include
struct empty_stack: std::exception {
const char* what() const throw();
};
template
class Threadsafe_stack {
private:
std::stack data;
mutable std::mutex m;
public:
Threadsafe_stack() {}
~Threadsafe_stack() {}
//copy constructor
Threadsafe_stack(const Threadsafe_stack& other) {
std::lock_guard lock(other.m);
data = other.data;
}
//delete assign operator
Threadsafe_stack& operator=(const Threadsafe_stack&) = delete;
void push(T new_val) {
std::lock_guard lock(m);
data.push(std::move(new_val));
}
std::shared_ptr pop() {
std::lock_guard lock(m);
if (data.empty()) {
throw empty_stack();
}
std::shared_ptr const res(std::make_shared(data.top()));
data.pop();
return res;
}
void pop(T& val) {
std::lock_guard lock(m);
if (data.empty()) {
throw empty_stack();
}
val = data.top();
data.pop();
}
bool empty() const {
std::lock_guard lock(m);
return data.empty();
}
};
main.cpp
#include
#include
#include "Threadsafe_stack.h"
int main(int argc, char *argv[]) {
Threadsafe_stack ts_stack;
std::thread t1([&ts_stack]() {
for (int i = 1; i
Подробнее здесь: https://stackoverflow.com/questions/792 ... nce-to-vta
Параллелизм C++ в действии, вопрос threadsafe_stack, неопределенная ссылка на `vtable forempty_stack' ⇐ C++
Программы на C++. Форум разработчиков
1734281764
Anonymous
Я пытался реализовать threadsafe_stack в главе 3 «Параллелизм в действии» на C++, и когда я попытался использовать его в main.cpp с двумя потоками, я получил сообщение об ошибке: неопределенная ссылка на `vtable для пустого_стака', это произошло, когда я попытался использовать функцию-член pop(). Я не понимаю почему, может кто-нибудь помочь?
Вот коды
Threadsafe_stack.h
#include
#include
#include
#include
struct empty_stack: std::exception {
const char* what() const throw();
};
template
class Threadsafe_stack {
private:
std::stack data;
mutable std::mutex m;
public:
Threadsafe_stack() {}
~Threadsafe_stack() {}
//copy constructor
Threadsafe_stack(const Threadsafe_stack& other) {
std::lock_guard lock(other.m);
data = other.data;
}
//delete assign operator
Threadsafe_stack& operator=(const Threadsafe_stack&) = delete;
void push(T new_val) {
std::lock_guard lock(m);
data.push(std::move(new_val));
}
std::shared_ptr pop() {
std::lock_guard lock(m);
if (data.empty()) {
throw empty_stack();
}
std::shared_ptr const res(std::make_shared(data.top()));
data.pop();
return res;
}
void pop(T& val) {
std::lock_guard lock(m);
if (data.empty()) {
throw empty_stack();
}
val = data.top();
data.pop();
}
bool empty() const {
std::lock_guard lock(m);
return data.empty();
}
};
main.cpp
#include
#include
#include "Threadsafe_stack.h"
int main(int argc, char *argv[]) {
Threadsafe_stack ts_stack;
std::thread t1([&ts_stack]() {
for (int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/79282770/c-concurrency-in-action-threadsafe-stack-question-undefined-reference-to-vta[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия