Есть простой класс для операци с переменными под мьютексом:
файл GSV.h
/* Global Secured Variable */
#ifndef GSV_H
#define GSV_H
#include <mutex>
template <typename T>
class GSV{
T value;
std::mutex m_value;
public:
GSV(){}
GSV(T val){value = val;}
~GSV(){}
operator T(){
std::lock_guard<std::mutex> lock(m_value);
return value;
}
operator=(T val){
std::lock_guard<std::mutex> lock(m_value);
value = val;
}
};
#endif /* GSV_H */
MSVS ругается так:
Compiler error C4430: missing type specifier - int assumed
на строку operator=(T val){
MinGW-w64 собирает без проблем и возмущений. Мне надо собрать проект в MSVS. Что ей не так, этой майкрософтовской среде?
Вы объявляете функцию operator=
, которая возвращает - что? Укажите возвращаемый тип, и все будет в порядке...
Обычно (но не обязательно) это ссылка на сам тип класса, а возвращается *this
, чтоб можно было выполнять цепочки присваиваний типа a = b = c;
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Первое: При вызове конструктора родителя нужно указать еще и его шаблонные параметры
Решаю небольшую задачку на тему словарейПисал подульно, чтобы было можно сразу найти ошибки
Работающий код, функция testValue() возвращает копию значения: