VisualStudio не собирает то, что собрал GCC

164
24 ноября 2018, 08:20

Есть простой класс для операци с переменными под мьютексом:

файл 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. Что ей не так, этой майкрософтовской среде?

Answer 1

Вы объявляете функцию operator=, которая возвращает - что? Укажите возвращаемый тип, и все будет в порядке...

Обычно (но не обязательно) это ссылка на сам тип класса, а возвращается *this, чтоб можно было выполнять цепочки присваиваний типа a = b = c;.

READ ALSO
Помогите пожалуйста. Что не так? [закрыт]

Помогите пожалуйста. Что не так? [закрыт]

Первое: При вызове конструктора родителя нужно указать еще и его шаблонные параметры

173
segmentation fault при выводе словаря set

segmentation fault при выводе словаря set

Решаю небольшую задачку на тему словарейПисал подульно, чтобы было можно сразу найти ошибки

169